注册
登录
编程中国
搜索
标签
帮助
编程论坛
»
C语言论坛
» 递归调用问题,望各位指教!
搜索
学习型 ASP/PHP/ASP.NET 主机
30
元/年
全能
ASP/PHP/ASP.NET
主机,支持月付
专业
MSSQL
数据库空间,支持月付
专业
MySQL
数据库空间,支持月付
‹‹ 上一主题
|
下一主题 ››
发新话题
发布投票
发布商品
发布悬赏
发布活动
发布辩论
发布视频
打印
递归调用问题,望各位指教!
jiang5495
新手上路
帖子
22
精华
0
注册时间
2008-5-11
个人空间
发短消息
加为好友
当前离线
1
#
大
中
小
发表于 2008-5-20 12:55
只看该作者
递归调用问题,望各位指教!
#include<stdio.h>
void fun(int n)
{
int next;
if(n<=1)
{
next=getchar();
printf("aaaaa|n");
putchar(next);
}
else
{
next=getchar();
printf("bbbbb|n");
fun(n-1);
putchar(next);
}
}
void main()
{
int n=5;
fun(n);
getch();
}
想问程序中的putchar(next)是怎么执行的:
为什么在屏幕上输入:ghjkl
会输出:bbbbb
bbbbb
bbbbb
bbbbb
aaaaa
lkjhg
主要想问:最后一行的输出结果是怎么回事,为什么不是输出:ll;而是:lkjhg
搜索更多相关主题的帖子:
递归
指教
UID
251052
积分
242
阅读权限
10
在线时间
4 小时
最后登录
2008-6-19
查看详细资料
TOP
sunkaidong
论坛元老
帖子
3851
精华
0
性别
男
来自
南京师范大学
注册时间
2006-12-28
个人空间
发短消息
加为好友
当前在线
2
#
大
中
小
发表于 2008-5-20 13:26
只看该作者
#include<stdio.h>
char c[]={"aaaaa"};
int fun(int n)
{
if(n==-1)
return 1;
if(fun(n-1))
{
for(int i=0;i<sizeof(c)-1;i++)
printf("%c",c[i]+n);
printf("\n");
}
return 1;
}
void main()
{
int n;
scanf("%d",&n);
fun(n);
}
学习需要安静。。海盗要重新来过。。
UID
117497
积分
42361
阅读权限
90
在线时间
1404 小时
最后登录
2008-7-6
查看详细资料
TOP
StarWing83
金牌会员
帖子
1511
精华
1
性别
男
来自
湖北工业大学
注册时间
2007-11-16
个人空间
发短消息
加为好友
当前离线
3
#
大
中
小
发表于 2008-5-20 15:13
只看该作者
sun……人家问问题呢……
是这样的,递归调用,putchar是要在函数返回的时候才调用的。所以首先输出bbbb了以后,其实并没有马上执行putchar,而是递归到了下一层。问题在于,即使是递归到了下一层,getchar得到的值已经被存到next变量中了,对于n=5的调用,这个值next='g',以此类推,直到n==1的时候,输出aaaa以后,直接输出了next='l',然后返回,返回到fun(2),接着执行putchar,输出fun(2)的putchar(next),这时输出'k',以此类推,一直退到最后一层,然后退出,就是这个结果。
专心编程………
飞燕算法初级群:3996098
我的Blog
UID
218134
积分
16621
阅读权限
70
在线时间
340 小时
最后登录
2008-7-5
查看个人网站
查看详细资料
TOP
‹‹ 上一主题
|
下一主题 ››
控制面板首页
编辑个人资料
积分记录
公众用户组