问个关于递归的问题

来源:百度知道 编辑:UC知道 时间:2024/06/27 10:20:56
递归中6+f(6-1),等于是6+(5+4+3+2+1)。
可是如果f(6-1)+f(6-1)却是等于32.
如果是2个(5+4+3+2+1)相加应该是30才对。

两个递归值相加是怎么运算的,一直不太明白过程,哪位大侠知道,麻烦告诉下
谢谢,只是过程没太明白,你的意思我明白。
这道题是递归中菲波那契数列的题,一般都会做过这道题,cadd(i - 1)+cadd(i - 2),我是不明白怎样计算的,cadd(i - 1)是数的前一位数,cadd(i - 2)前两位数,程序我会写。。。。。可是我用好多纸怎么也算不出结果,我想知道的事过程啊,如何计算的

比如这样的

static int cadd(int i){
if(i<2)
return 1;
else
return cadd(i - 1)+cadd(i - 1); }
}

class Lx1{
public static void main(String args[]){
System.out.println(Wa.cadd(5));}

你说什么呢?递归?
#include "stdio.h"

int f(int n)
{
if(n<=1)return n;
else return (n+f(n-1));
}

main()
{
int x=f(5)+f(5);
int y=6+f(5);
printf("x=%d, y=%d\n", x, y);

return 0;

}

输出结果
x=30,y=21
从结果来看,根本不会出现32的情况。

return cadd(i - 1)+cadd(i - 1);
从这句看来,cadd(i)计算的并不是n+,而是
2n+?
应该是return cadd(i - 1); 吧

递归的过程就是寻找到最底层然后开始计算,得到结果就返回上一层,不断向上,最终得到结果。一层的计算结束,函数返回结果,内部的变量就会全部销毁,怎么会有固定不变的值?