主题:哪位大哥告诉我,这个递归顺序,想不出来!
刚开始学,所以一下想不出来,可以又非常想知道。谢谢各位了
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
[code=c]
# include <stdio.h>
main ()
{
int i = 5;
void palin(int n);
printf ("\40");
palin(i);
printf ("\n");
getchar ();
return 0;
}
void palin(int n)
{
char next;
if (n <= 1)
{
next = getchar ();
printf ("哦哦 ");
printf ("嘿嘿 ");
putchar (next);
printf ("哦哦 ");
}
else
{
next = getchar ();
palin (n - 1);
printf ("哈哈 ");
putchar (next);
}
}
[/code]
刚刚想出来一个推导,各位大哥看对不对,这里paling函数一共是调用了四次。我输入zxcvb,那么从开始的palin(n=1)的时候开始,是x,可是被被palin(5)调用了,最好zxcv被依次调用完了。这个时候palin(1)开始输出--哦哦 嘿嘿 b哦哦。下面是开始从palin(2)到palin(5)的输出---哈哈 v哈哈 c哈哈 x哈哈 z
运行结果为
zxcvb
哦哦 嘿嘿 b哦哦 哈哈 v哈哈 c哈哈 x哈哈 z[em2][em2]
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
[code=c]
# include <stdio.h>
main ()
{
int i = 5;
void palin(int n);
printf ("\40");
palin(i);
printf ("\n");
getchar ();
return 0;
}
void palin(int n)
{
char next;
if (n <= 1)
{
next = getchar ();
printf ("哦哦 ");
printf ("嘿嘿 ");
putchar (next);
printf ("哦哦 ");
}
else
{
next = getchar ();
palin (n - 1);
printf ("哈哈 ");
putchar (next);
}
}
[/code]
刚刚想出来一个推导,各位大哥看对不对,这里paling函数一共是调用了四次。我输入zxcvb,那么从开始的palin(n=1)的时候开始,是x,可是被被palin(5)调用了,最好zxcv被依次调用完了。这个时候palin(1)开始输出--哦哦 嘿嘿 b哦哦。下面是开始从palin(2)到palin(5)的输出---哈哈 v哈哈 c哈哈 x哈哈 z
运行结果为
zxcvb
哦哦 嘿嘿 b哦哦 哈哈 v哈哈 c哈哈 x哈哈 z[em2][em2]