递归原理
函数调用
int functionB(int a,int b){
return (a+b);
}
int functionA(){
...
functionB(10,10);
...
return 0;
}
递归函数
int func(int n){
int r;
if(n<0)
printf("data error\n");
else if(n==0 || n==1)
r=1;
else
r=n*func(n-1);
return r;
}
数据保存在栈里面
r=n*function(n-1)函数被独立的分配了内存单元,function(n-1)已经不是原来的function(n)了,就像我们重新写了几行代码一样。
递归函数里会给一些限定条件,。要不然函数会一直调用自身,会死循环。
所谓递归就是讲一个问题为n的问题转化为问题为n-1的问题。
递推:是构造一个低阶的规模
eg:
递推思想,从低规模开始:求n的阶乘,通过规模为1的推导出规模为i+1的,以此类推得出规模为n的问题。
//总结下来就是:递归:n从高到低;递推:n从低到高!
int func(int n)
{
int r=1,j;
for(i=1;i<=n;i++){
r=r*i;
}
return (r);
}