C#递归的问题

2025-03-07 07:35:22
推荐回答(2个)
回答1:

//递归,其实就是自己调用,知道完成就不调用自己!假如n=5; //int 结果 //f(5)=f(4)+5 //f(4)=f(3)+4 //f(3)=f(2)+3 //f(2)=f(1)+2 //f(1)=f(0)+1 //f(0)=0 这样看 就很容易看出结果来了 假如 我们把带有函数的换成字母那回更直观,就是我们的中学数学了 f(5)=x4+5; x4=x3+4; x3=x2+3; x2=x1+2; x1=x0+1; x0=0; 这样我觉得大家口算就能算出来 f(5)是多少! 其实递推就是自己调用自己,只是每次调用参数都在更改,当参数与设定的值符合时,才不再调用自己!有点嵌套的感觉! return 0 就是你所谓的出口,它返回的是一个值,而不是一函数! 注意:理解的时候 在这里不把程序理解成一步到位的概念 !

回答2:

递归相当于数学里面的递归式,你的函数好像写错了,+号应该是×号!这不是求阶乘的,而是求和的 求阶乘应该是下面的 int f(int n) { if (n < 1) return 1; int i = f(n - 1)*n; return i; } 解释如下: if (n < 1) return 1; 相当于 f(1)=f(0)=1; int i = f(n - 1)*n; 相当于f(n)=f(n-1)*n 你用数学的方法,倒推过去刚好是f(n)=n*(n-1)*....**1