| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1961 人关注过本帖
标题:请教这个程序是怎么实现的:用函数递归以相反顺序输出5个字符??
只看楼主 加入收藏
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:1 
void palin(int n)
{
  char ch;
  ch=getchar();
  if(n<=1)      
     putchar(ch);
  else
  {  
    palin(n-1);/* 注意分析这个,因为每次调用都会让原本的n - 1,因此它是趋于结束的,看上边的地方.因此它才能得以执行,当碰到结束条件,再反过来求值 */
    putchar(ch);
  }
}
建议LZ把这个递归调用函数自己写出每一步步骤(还好不大),这样可以直观的了解它的过程

想象力征服世界
2009-11-11 23:11
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:6 
回复 10楼 lijm1989
程序代码:
#include<stdio.h>
void reverse(char *s)
{
    if( s[0]!='\0')
    {
        reverse(&s[1]);
        putchar(s[0]);
    }
}
int main()
{
    char s[6];
    scanf("%s",s);
    reverse(s);
    return 0;
}
2009-11-12 12:54
蓝色药剂
Rank: 4
等 级:业余侠客
帖 子:43
专家分:204
注 册:2007-11-24
收藏
得分:8 
#include <stdio.h>
void main()
{
  int i=5;
  void palin(int n);  
  palin(i);
  printf("\n");  
}
void palin(int n)
{
  char ch;
  ch=getchar();
  if(n<=1)      
     putchar(ch);
  else
  {  
    palin(n-1);
    putchar(ch);
  }
}
假定我输入:
a b c d e

输出为:
e d c b a

递归过程:
n = 5     palin(5)->getchar() ch = a ->palin(4) 转下一行       putchar() 打印a,函数退出递归结束
n = 4     palin(4)->getchar() ch = b ->palin(3) 转下一行       putchar() 打印b,函数退出转上一行
n = 3     palin(3)->getchar() ch = c ->palin(2) 转下一行       putchar() 打印c,函数退出转上一行
n = 2     palin(2)->getchar() ch = d ->palin(1) 转下一行       putchar() 打印d,函数退出转上一行
n = 1     palin(1)->getchar() ch = e ->if(n<=1) putchar()打印e,函数退出转上一行
2009-11-14 09:28
李若斌
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
收藏
得分:1 
n=3 输入   a,b,c,  
首先palin(3)中ch='a' if((n=3)<=1) 不成立那么转到下面的else语句即转到palin(2)中,在palin(2)中ch='b',但是if((n=2)<=1)依然不成立,再转到palin(1)中,在palin(1)中,ch='c',这里if((n=1)<=1)成立,那么输出ch,然后再倒回去,分别输出当palin(2)中ch的值,当palin(3)中ch的值。
我是这样理解的c=getchar(),它首先从把你输入的第一个字符赋值给c,然后再第二个,再第三个....直到第N个。不知道我对那个getchar()的理解错误了没有,有错误的话还请大家改正下我的错误观点。
2009-11-14 10:16
快速回复:请教这个程序是怎么实现的:用函数递归以相反顺序输出5个字符??
数据加载中...
 
   



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

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