递归到底怎么想?
很麻烦的说。可以把他想象成一个循环还是什么?如果一个函数递归下还有语句,是不是每递归一次都会执行下一个语句?
比如
fun(n)
{
if(n-1)
fun(n-1); //A
printf("sdfsdf");//B
}
如果n是3输出几次sdfsdf?
我一开始理解是在A句时不断的n-1了,一直到n=1的时候也就是n-1=0的时候才执行B句。这肯定是错的。那么就是递归一次执行一次了?
程序代码:fun(n)
{
if(n-1)
fun(n-1); //A
printf("sdfsdf");//B
}fun(n-1); //这一句先不管,反正假设就是调用了其他一个函数,完成了一些功能
程序代码:int factor(int n)
{
if (n==1)
return 1; //即上面的LINE2
else
return factor(n-1)*n; //即上面的LINE1
}分析如下:
if(n/10)
fun(n/10);
ch[i]=n%10+'0';那么看这里,我们不管fun(n/10)是怎么实现的,总之他完成了任务,n的前面几位都存好了,而且这个时候i肯定是指向最后一个字符应该放的地方,那我们只要把n%10+'0'保存到ch[i]就行了