我剛剛發現約遞歸函數大概幾分鐘前回來。我玩弄他們,現在我從以下功能中獲得不同的輸出:遞歸函數的不同輸出
int function(int m) {
m = 2*m;
std::cout<<"In f m = "<<m<<std::endl;
if(m > 20)
{
return m;
}
function(m);
};
int function2(int n) {
n = 2*n;
std::cout<<"In f2 n = "<<n<<std::endl;
if(n < 20)
{
function2(n);
}
return n;
};
int main() {
int a = 2;
std::cout <<"function(a) = "<<function(a)<<std::endl;
std::cout <<"function2(a) = "<<function2(a);
return 1;
}
爲了這一點,我得到的輸出:
在FM = 4
在FM = 8
在FM = 16
在FM = 32
功能(A)= 32
在F2中n = 4的
在F2中N = 8
在F2中N = 16
在F2中N = 32
函數2的(a)= 4
應該不是它們都產率的結果32
?
您的第一個函數實際上是表現出不確定的行爲,因爲如果基本情況不觸發它沒有返回值。 –
@CharlesSalvia你在這裏用'base case'表示你的意思是什麼? –