函数递归调用

作者在 2010-10-13 15:41:15 发布以下内容
C语言学习第二周,收获小结(一)递归调用
例:有5个人,第一个人10岁,后面每个人均比前一个人大2岁,问第5个人多大?
分析:age(n)=1, n=1;
age(n)=age(n-1)+2, n>=2.
#include "stdio.h"
int age(int n)
{
   int c;
   if(n==1)
      c=10;
   else
      c=age(n-1)+2;
   return c;
}
void main()
{
   printf("%d\n",age(5));
}
 例:用递归法求阶乘n!(n>0)
分析:n!=1, n=0,1;
n!=n*(n-1)!, n>1;
#include "stdio.h"
float Fac(int n)
{
   float f;
   if(n>1)
      f=Fac(n-1)*n;
   else if(n==1||n==0)
      f=1;
   else
      f=0;
   return f;
}
void main()
{
   int n;
   float f;
   printf("Input a number:\n");
   scanf("%d",&n);
   f=Fac(n);
   if(!f)
      printf("Error!\n");
   else
      printf("%d!=%.0f",n,f);
}
 小结:使用递归要注意两点:1)递归的结束条件;2)完整并且正确的递推公式。
笔记 | 阅读 713 次
文章评论,共0条
游客请输入验证码
浏览37872次