可能是一個非常基本的問題,但我只是被困住了。我試圖運行以下遞歸函數:該遞歸函數是如何工作的?
//If a is 0 then return b, if b is 0 then return a,
//otherwise return myRec(a/2, 2*b) + myRec(2*a, b/2)
但它只是陷入無限循環。任何人都可以幫助我運行該代碼並解釋該函數的工作原理嗎?我沒有任何問題地構建了各種遞歸函數,但是這只是在我的腦海裏鑽了一個洞。 謝謝。
這裏是我試圖做的:
#include<iostream>
int myRec(int a, int b){
if (a==0){
return b;
}
if (b==0){
return a;
}
else return myRec(a/2, 2*b) + myRec(2*a, b/2);
}
int main()
{
if (46 == myRec(100, 100)) {
std::cout << "It works!";
}
}
你爲什麼期待46? –
永不停止,因爲零永遠不會到達。可能是你應該停止,當它小於1. – PatricK
46是答案。我只知道它。 – Pasha