独孤小梦 发表于 2008-7-19 22:36

这里是一个利用递归函数调用方式的问题,请大家看看,谢谢!

首先谢谢大家能看我的贴,问题如下:
#include "stdio.h"
void main()
{
        void palin(int n);
        int i=5;
        printf("\40:");
        palin(i);
        printf("\n");
}
void palin(int n)
{
        char next;
        if(n<=1)
        {
                next=getchar();
                printf("\n\0:");
                putchar(next);
        }
        else
        {
                next=getchar();
                palin(n-1);
                putchar(next);
        }
}
这里是函数调用函数?palin(n-1);这里应该怎么理解?
把i-1然后在调用?只到N<=1吗?
我输入一些数后,这里next=getchar();貌似只能保存1个数字啊,为什么我能输入几个数呢?
然后回车以后返回了三个数,不管输入什么,都返回三个数,这里三个数是被掉转的^

独孤小梦 发表于 2008-7-19 23:25

这里是个递归!我已经了解了!可是不明白这几个问题:
我输入一些数后,这里next=getchar();貌似只能保存1个数字啊,为什么我能输入几个数呢?
然后回车以后返回了三个数,不管输入什么,都返回三个数,这里三个数是被掉转的^

chengli 发表于 2008-7-20 08:54

递归使用堆栽来实现的,getchar()函数的输入结果放在队栽中的

如 输入 12345\n 的话 就会输出
54321
如果一个一个输入的话,相当于 1 \n 2 \n 3 \n 回车也是一个ASCII码  不要忘了  所以就
3
2
1
再加上printf("\n\0:");
光标就跳到了 下一行了

独孤小梦 发表于 2008-7-20 16:13

恩,了解了!谢谢啊!

页: [1]

编程论坛