2011-04-07 87 views
0

我想做一個程序,發現一個數組的整數的次數少於或等於一個特定的數字。我必須使用遞歸。 我想在整數大於數字時返回0,否則返回1。 最後,我想找到一種方法來添加所有這些返回通過再次調用函數作爲遞歸。 請幫幫我!函數通過使用遞歸

我每次都必須在堆棧中保存返回值($ v0)嗎?

+0

你在說什麼語言? – codymanix 2011-04-07 14:32:41

+0

codymanix:MIPS是一種低級彙編語言。它沒有被廣泛使用(我相信我的老師說只有索尼仍然在Playstation遊戲系統中使用它)。 – 2011-04-07 14:35:48

回答

0

是的,在每次函數調用的開始時,您調用堆棧並存儲必要的值,並且在函數結尾(結語)您必須將堆棧重置到其位置,否則您將恢復無效變量並來自堆棧的數據。

我的建議是在地址傳遞給你的叮咬每個呼叫和陣列中的項目數的數組並返回迭代次數(右遞歸調用檢查迭代>陣列數量和分支之前您結語)以及事件總數。

通過我的頭腦快速思考告訴我,如果你正確實施它,它應該工作。不幸的是,我沒有時間寫下這樣的例子(我不得不馬上離開課堂),但理論應該是合理的。我可以看看你的代碼,稍後可能會提供幫助,或者在今天晚些時候寫一個簡單的例子。

+0

感謝您的建議!我會嘗試將它們應用到我的程序中,並希望找到解決方案! – zoe 2011-04-07 15:02:55

0

只是一對夫婦的想法:

  1. 通常情況下,按照慣例,0表示假;其他任何價值都是正確的。爲了避免混淆,您可能希望在代碼中採用該約定。當你描述你的想法時,看起來真相和虛假的東西與傳統的極性相反。

  2. 或許應該請你的教練的改善:而不是返回0或1的整數比較的結果,你可能要考慮返回兩個比較整數之間的算術差。這不僅會給你帶來不平等(即差異== 0),還會給你一些有關數組整數成員的附加信息,而不會增加程序複雜性或時間上的成本。我被教導說,在其他條件相同的情況下,函數返回的信息越多越好。

  3. 至於遞歸:我不認爲必須保留所有的($ V0),只要你記得積聚在一個全局變量每個返回($ V0)某處S中的堆棧。但這只是我目前的看法,沒有看到問題。

HTH。我不得不說,這是一個非常好的,小巧的,易於管理的遞歸入門。布拉沃。

+0

感謝您的建議!我會嘗試將它們應用到我的程序中 – zoe 2011-04-07 15:01:35

+0

您會希望將$ v0存儲在堆棧中,原因是您並不完全知道它是否在其他地方使用。我被教導將EVERY變量存儲到堆​​棧中,並根據需要將其刪除。 – 2011-04-07 20:51:20