一个简单的C语言程序,包含递归。我对递归不是太懂,求详解递归过程及结果。关键要的是递归过程。

#include "stdio.h"
void p(int w)
{
if(w>0)
{
p(w-1);
printf("%4d",w);//输出w
p(w-1);
}
}
void main()
{
p(3);
printf("\n");
}

分析过程:

根据递归函数分析:
p(w) = p(w-1) w p(w-1)
有
p(3) = p(2) 3 p(2)
p(2) = p(1) 2 p(1)
p(1) = p(0) 1 p(0)

由于p(0)不会输出任何字符,故
p(2) = p(0) 1 p(0) 2 p(0) 1 p(0)
= 1 2 1
p(3) = p(2) 3 p(2)
= 1 2 1 3 1 2 1
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-28
函数-等价于 输出
p(3)----p(2) 3 p(2)------1 2 1 3 1 2 1
p(2)----p(1) 2 p(1) ----- 1 2 1
p(1)----p(0) 1 p(0)-------1

程序输出:
1 2 1 3 1 2 1
第2个回答  2011-05-28
答案 1 2 1 3 1 2 1
这题递归的确有些绕,不过你可以在vc++中用跟踪内存的方法看下递归的全过程
相似回答