小弟我很疑惑啊,【全部积分50】求递归问题。。。(谢谢各位大神!!!!)
这是我写的一个简单的程序,想看看递归原理,失败。。。。。#include<stdio.h>
void recursive(int n) ;
void main()
{
int a;
scanf("%d",&a);
printf("\n\n\n");
recursive(a);
return ;
}
void recursive(int n)
{
int t=1; /*第一个问题*/
if(n==0)
{
printf("结果出来了%d\n",t++);
}
else if(n%2==0)
{
recursive(n/2);
printf("除以2 %d\n",t++);
}
else if(n%2)
{
recursive(n-1);
printf("减去1 %d\n",t++);
}
}
有几个问题:
(1) 就是在标注的地方定义了t的值,程序好像是每递归一次就从头开始,所以后面的t++都为一
但是,我把那个定义改为printf("工作原理");结果就只在刚开始的时候出现“工作原理”,后面都没有了,求解.
(2) 就是递归到最后的时候,是系统将递归中参数存起来了吗?
(3)递归运行的时候,顺序是怎样的,请就这个题说一下。
其实俺是递归那块没学懂,书上的也没这个,自己看也不懂。。
[ 本帖最后由 laazyt 于 2010-7-28 13:48 编辑 ]