递归与递推的区别
递归整体是分为两步的:1.向下递推直到限制条件到了。
2.回溯结果。
而递推就是从初始态出发,不断改变自己的过程。
如:我想让1+2+4+...+64;
递归是由最终态向前递推,即:
#include<stdio.h>
int solve(int n)
{
if(n == 1)
return 1;
return n+solve(n/2);
}
int main()
{
printf("%d\n",solve(64));
return 0;
}
</span>
而若只用递推则是:
#include<stdio.h>
int solve(int n)
{
int i = 1;
while(i <= 64)
{
n += i;
i = i*2;
}
return n;
}
int main()
{
printf("%d\n",solve(0));
return 0;
}
</span>