我覺得有點啞問這個,但在這裏我們去...C++遞歸問題
當試圖遵循以下網站的遞歸的例子,我遇到了有我困惑的道路隆起。
我改變了代碼略微只是爲了讓我的頭在代碼遞歸的例子,我幾乎有我的頭,但我無法弄清楚爲什麼變量'n'遞增'通過B'當我沒有告訴程序增加'n'時。
請你幫忙解釋一下嗎?
#include <stdlib.h>
#include <iostream>
using namespace std;
long factorial (long n)
{
if (n > 1)
{
long r(0);
cout << "Pass A" << endl;
cout << "n = " << n << endl;
cout << "r = " << r << endl;
r = n * factorial (n-1);
cout << "Pass B" << endl;
cout << "n = " << n << endl;
cout << "r = " << r << endl;
return (r);
}
else
return (1);
}
int main()
{
long number;
cout << "Please type a number: ";
cin >> number;
cout << number << "! = " << factorial (number) << endl;
system ("pause");
return 0;
}
您確定您將來自遞歸調用的不同級別的輸出混淆爲'factorial'嗎?請注意,您希望給定級別的「傳遞B」在所有引發的遞歸調用的「傳遞B」後打印。 – 2010-04-26 07:40:39
這正是SO的問題。不要因爲張貼而感到愚蠢。你還會學什麼? – 2010-04-26 07:50:46