求大佬讲解一下这个程序递归的含义(递归,有哪个大神给我讲讲这个递归的意思啊)
递归,有哪个大神给我讲讲这个递归的意思啊
递归算法,俗称自己调用自己,同时设置有结境就是如同出口跳出方法。这里的出口就是
if (i <= 0)
return 0;
else if(i > 0 && i <= 2)
return 1;
//最后Foo方法里面几乎都是1.只有偶数时才会是0
你可以的调试运行一下在慢慢理解就明白了.
把方法值Foo(4)改成4小点 结果3
运行如下:
Foo Foo
3 2 等于4时
2 1 等于3时
等于2或1时就直接返回1了 所以1+1=2, 因为 return Foo(i -1) + Foo(i - 2); 所有之和又会进入Foo方法 等于执行完又回传了 2传入Foo方法值等于1 最后结果就是1+1+1=3最后值
把方法值Foo(3)改成3小点 结果2
运行如下:
Foo Foo
2 1 等于3时
等于2或1时就直接返回1了 所以1+1=2, 因为等于3时已经返回就是return 最终值,所有最后不用加.最后值 1+1=2
希望能帮到你
C语言求高手求解释,这个递归函数是什么意思?
fun(k)的意思就是如果k>0就输出一次k 然后再运行fun(k-1) 如果k<=0 就不满足if的条件 函数就终止了
请大家解释一下这个递归的过程
void reverse(int a[],int n){ 这是一个用来倒序的递归,传进来的是一个整形的数组 a[] n为这个数组需要处理元素的长度,即将第一个元素换到哪个位置
int t,i;
if (n==1) return; //如果已经完成就退出递归
t=a[0]; 让变量t等于这个需要倒序的数组的第一个元素
for ( i=0;i a[i]=a[i+1]; 每个元素都往前移动一位 a[n-1]=t; 最后一位即为第一个 此时 第一个元素已经放到了数组的最后 如果说刚开始的时候数组的元素为a[] ={0,1,2}的话,那么经过一次这个算法的时候a[]={1,2,0} 此时因为已经将最前的一个弄到了最后面,所以最后面的那个元素我们就不对它做处理了 这里的处理方式就是,本来数组长度为3,但我对它倒序的时候我只倒序前面的2个元素 即n-1,就好像此时将a[]={1,2}传到这个方法里面,此时的a[]数组中第一个元素已经是原来数组的第二个元素,所以要将它的第一个元素放到原来数组的倒数第二个位置,n-1就做到了这步,每执行一次这个方法需要处理的元素都会减少一个,直到最后一个元素交换完成,即数组元素需要处理的元素为1 reverse(a,n-1); } 给你解释函数吧 void palin(n) //n个数的逆序 int n; { char next; if(n<=1) //如果n<=1,直接输出该字符并换行 { next=getchar(); printf("\n\0:"); putchar(next); } else { next=getchar(); palin(n-1); //如果字符数>=1,则一边输入一边递归n-1并输出 putchar(next); } } 举个例子,比如倒序abcde就相当于:倒序bcde+输出a 倒序bcde相当于:倒序cde+输出b 以此类推完成递归哪位大哥给我分析一下这个简单的递归程序?谢!