2014-02-20 25 views
0

如果我輸入的號碼是2 ......據我所知,該函數將以前的答案乘以2,直到數將大於25遞歸最終數目

2 * 2 = 4

4 * 2 = 8

8 * 2 = 16

16 * 2 = 32 ...程序停止,因爲num是32

但然後我的最終數62如何會收到該號碼>

#include <iostream> 
using namespace std; 

int myRecursiveFunction (int num) 
{ 
    if (num >= 25)   // stopping condition 
     return num; 
    else 
     cout << "number is at " << num << endl; 
     return num = num + myRecursiveFunction (num * 2); 
} 
int main() 
{ 
    int num, num1; 
    cout << "Enter a number: "; 
    cin >> num; 
    num1 = myRecursiveFunction(num); 
    cout << "Final number is: " << num1; 
    return 0; 
} 
+1

'32 + 16 + 8 + 4 + 2 = 62' ...這就是你得到的!你的預期結果是什麼? –

+1

'return num = num + myRecursiveFunction(num * 2);'應該是'num = num + myRecursiveFunction(num * 2);返回num' – smac89

+0

@Jessica'myRecursiveFunction(16 * 2)'返回'32'並且將它總結爲num# –

回答

0

2 + 4 + 8 + 16 + 32 = 62。
返回值每次都獲取添加。

+0

以及我計算出來的結果(2 + 4 + 8 + 16 + 32),但爲什麼包含32?我以爲它會停止在16以來,因爲數字大於25 – Jessica

+0

ahh是16是數字32是答案...所以數字不是> 25 – Jessica

+0

因爲你用16 * 2調用它,使它是32,這是什麼時候開始迴歸。 – Dijkgraaf

2

你想這樣做:

2 * 2 = 4

4 * 2 = 8

8 * 2 = 16

16 * 2 = 32 ...程序因爲num是32而停止

你正在做 return num = num + myRecursiveFunction(num * 2); 返回32 + 16 + 8 + 4 + 2 = 62

+0

所以爲真 返回num = num + myRecursiveFunction(num * 2); 應該是 return num = myRecursiveFunction(num * 2); – Dijkgraaf