| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 692 人关注过本帖
标题:[求助]递归问题?
只看楼主 加入收藏
xiehongyou
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2004-8-29
收藏
 问题点数:0 回复次数:3 
[求助]递归问题?
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
1.程序分析:
2.程序源代码:
#include "stdio.h"
#include "conio.h"
main()
{
  int i=5;
  void palin(int n);
  printf("\40:");
  palin(i);
  printf("\n");
  getch();
}
void palin(n)
int n;
{
  char next;
  if(n<=1)
  {
    next=getchar();
    printf("\n\0:");
    putchar(next);
  }
  else
  {
    next=getchar();
    palin(n-1);
    putchar(next);
  }
}
请问这个递归函数怎理解?关于求阶乘的递归我可以理解,这种递归我总理解不了,请帮帮我!头都想大了,就是不明白!
搜索更多相关主题的帖子: 递归 
2004-12-22 23:45
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
收藏
得分:0 

这个递归的主要注意点就在getchar()宏的使用上:

void palin(n) int n; { char next; if(n<=1) { next=getchar();//如果n<=1,则在此等待键盘的响应,并把next符值为回车前的一个键 printf("\n\0:");//如果n>1,则回先执行下面的if else,这样已经在键盘的缓冲区中有数据了,再执行这句的时候//

//就是读缓冲了,不必按键,不过n和你的按键次数要对应,不然你看看结果!!! putchar(next); } else { next=getchar(); palin(n-1); putchar(next); } }


差点把你忘了...
2004-12-23 11:34
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
收藏
得分:0 

第一次执行next=getchar()(在if(n<=1)中,表示是读缓冲),读完后,得到回车键前面的一个字符,

这时候,键盘缓冲区的尾指针迁移一个,就指到回车键前面的第二个字符,依次类推!!!

主要就是键盘缓冲的自己控制,而不用你再操作!!!


差点把你忘了...
2004-12-23 11:38
午餐肉
Rank: 2
等 级:论坛游民
帖 子:22
专家分:16
注 册:2009-7-27
收藏
得分:0 
我就不明白 next=getchar();是输入一个字符,putchar(next);是输出一个字符,
按照他怎么写我怎么感觉都是是输入一个输出一个,也没有以相反顺序打印输出。
请高手帮给与一点指点。
2009-08-21 10:22
快速回复:[求助]递归问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017384 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved