递归(未完)

本文深入探讨了递归的概念,从基本定义到实际应用,详细解释了递归的工作原理,并通过多个实例展示了如何在编程中使用递归解决复杂问题。同时,文章也提到了递归的优缺点以及在优化时需要注意的事项。
摘要由CSDN通过智能技术生成

1.

int Fact ( int  n )
{ /*求正整数n的阶乘值*/
  int m;
  if (n==0)  return(1);
  else
   {
     m=n*Fact(n-1);
     return(m);
     }
  }
main()
{ int n,a;
  scanf("%d",&n);
  a=Fact(n);
  printf("the factorial is %d",a);
} 
int Fact ( int n )
{/*求正整数n阶乘值的非递归算法*/
      int i,fac;
      fac=1;    /*将变量fac初始化为Fact(0)的值*/
      for (i=1;i<=n; ++i) fac =i*fac;  /*根据递推关系进行递推*/
      return(fac);
}
main()
{ int n,a;
  scanf("%d",&n);
  a=Fact(n);
  printf("the factorial is %d",a);
} 

2.

 int Fibona ( int  n )
 { /*求第n项Fibonacci级数的值*/
   int  m;
   if  (n==1)  return (1);
   else if (n==2) return(1);
      else
        {  m=Fibona(n-1)+ Fibona(n-2);
           return (m);
          }
  }
main()
{  int n,a;
   scanf("%d",&n);
   a=Fibona(n);
   printf("the fibonacci value is %d",a);
}

3.

int gcd(int m,int n)
{ /*求两个正整数的最大公约数*/
  int k;
  if (n==0) return(m);   
  else if (n>m) return(gcd(n,m));
       else 
         {
          k=m%n;
          return(gcd(n,k));
           } 
  }
main()
{int m,n;
 printf("input m and n:");
 scanf("%d%d",&m,&n);
 printf("\n%4d%4d",gcd(m,n),gcd(n,m)) ;
}  

4.

#include<stdio.h>
void convert(int n)
  { /*将正整数转换成字符串*/
     int i;
     char ch;
     if ((i=n/10)!=0)
        convert(i);
      ch=( n % 10 )+ '0';
      putchar(ch);
    }
main()
{ int n;
  scanf("%d",&n);
  convert(n);
}

5.

print ( int n )
  {  /*打印数字三角形*/
    int i;
    if (n!=0)
      {
          print(n-1);
          for(i=1;i<=n;i++)
	     printf("%d",n);
	   printf("\n");
        }
     }
main()
{  int n;
   scanf("%d",&n);
   print(n);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值