
递归算法 【程序1】 愿目:有5个人坐在一起,日第五个人多少岁?他说比第4个人大2岁。付第4个人岁 数,他说比第3个人大2岁。月第三个人,又说比第2人大两岁。问第2个人,说比第一个 人大两岁。最后问第一个人。也说是10岁。请问第五个人多大? 1.程序分析:利用域归的方法,递白分为目推和递推两个阶段。要想知道第五个人岁数, 需知道第四人的岁数,依次类推,推到第一人(10岁),再往日推。 2程序潭代码 age(n) int n; I int c: if (n==1)c=10: else c=ace(n-1)+2; return (e): main() [printf(%d°,ase(6): 【程序2】 题目:利用递自函数调用方式,将所输入的5个字符,以相反顺序打印出来。 1.程序分析: 2程序源代码: sinclude "stdio.h" min() { int i-5: void palin(int n): printf(0:)
递归算法 【程序 1】 题目:有 5 个人坐在一起,问第五个人多少岁?他说比第 4 个人大 2 岁。问第 4 个人岁 数,他说比第 3 个人大 2 岁。问第三个人,又说比第 2 人大两岁。问第 2 个人,说比第一个 人大两岁。最后 问第一个人,他说是 10 岁。请问第五个人多大? 1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数, 需知道第四人的岁数,依次类推,推到第一人(10 岁),再往回推。 2.程序源代码: age(n) int n; { int c; if(n==1) c=10; else c=age(n-1)+2; return(c); } main() { printf("%d",age(5)); } 【程序 2】 题目:利用递归函数调用方式,将所输入的 5 个字符,以相反顺序打印出来。 1.程序分析: 2.程序源代码: #include "stdio.h" main() { int i=5; void palin(int n); printf("\40:");

palin(i): printf("\n"): 1 void palin(n) int n: L char next: if(n<=1) next=zetchar(: printr("\n\o:): putchar(next): else next"getcharO: palin(n-1); putchar (next); 【程序3】 题目:利用递归方法求5!。 1.程序分析:递归公式:fn=fn14! 2程序源代码: #include "stdio.h" nain() [ int i: int factO: for(i-0:i(5;i+)
palin(i); printf("\n"); } 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); } } 【程序 3】 题目:利用递归方法求 5!。 1.程序分析:递归公式:fn=fn_1*4! 2.程序源代码: #include "stdio.h" main() { int i; int fact(); for(i=0;i<5;i++)

printf("\40:sd!=d\n",i,fact (i)): int fact(》 mtj日 int sum: if(j--0) sunl: else sun-jefact (j-1): return su;
printf("\40:%d!=%d\n",i,fact(i)); } int fact(j) int j; { int sum; if(j==0) sum=1; else sum=j*fact(j-1); return sum; }