2 qinghong xiao qinghong_xiao 于 2016.04.26 09:42 提问

求助这个函数的递归怎么理解,我是初学者,谢谢!
 #include<iostream>
#include<Windows.h>
using namespace std;
int age(int);

int main()
{
    cout<<age(5)<<endl;
    system("pause");
    return 0;
}

int age(int n)
{
    int c;
    if(n == 1) 
    {
        c = 10;
        cout<<n<<endl;
    }
    else c = age(n-1)+2;
    return c;
}

6个回答

qq_32835941
qq_32835941   2016.04.26 09:57
已采纳

age(5)->age(4)->age(3)->age(2)->age(1),1满足if条件,这个时候后面就没有递归了,执行age(1),执行完c = 10把值返回,返回到age(2)函数中,
同理执行age(2),返回值是12,就这么计算下去,一直执行到age(5)。

qinghong_xiao
qinghong_xiao 谢谢!
一年多之前 回复
github_34226737
github_34226737   2016.04.26 10:38

if(n==1)是递归终止条件,else后面是递归的方法,你只要按照过程演算一遍就好理解了。 这就是那道算年龄的题。

CSDNXIAON
CSDNXIAON   2016.04.26 09:52

本人整理好的一些JavaScript函数提供给初学者的朋友们使用
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

qq_31793421
qq_31793421   2016.04.26 09:54

else c = age(n-1)+2;
return c;

qq_32835941
qq_32835941   2016.04.26 09:57

道理跟栈一样,先进后出

u010701279
u010701279   2016.04.27 11:54

计算递增数列a(n)=a(n-1)+2,a1=10

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!