函数递归的简单实例

来源:互联网 发布:to是网络的意思是什么 编辑:程序博客网 时间:2024/09/21 06:35

// 递归调用add函数实现1+2+3。。。。+100的值

// 函数实现过程,i=1,累加i,并且判断i的值是否等于100,如果等于,则直接返回累加结果s

//如果不满足i等于100,则执行 return add(++i); i自增,调用add(2),再将s加上2,这样s一直加到100 ,再返回s的最终结果。

【例1】

#include <stdio.h>int add(int i);int main(){int s,i=1;   s=add(i);printf("%d\n",s);_getch();   //暂停屏幕  }int add(int i){static int s=0;  //为了保证每次调用 add()函数时,将s赋值为0,所以应加上static  s=s+i; if(i==100) return s; return add(++i);        }

// 求fibnbcci数列

【例2】

 

// 求fibnbcci数列

【例2】

 #include <stdio.h>      int fun(int n);       int main()      {         int n;       scanf("%d",&n);       printf("%d\n",fun(n));       _getch();      }   int  fun(int n)  { long f;  if(n==0||n==1) f=1;    else  f=fun(n-1)+fun(n-2);  return f;
}

【例3】求两数的最大公约数

//算法:1.求p=m%n

        2.若p=0,则n为所求值

        3.若p!=0,则将n赋值给m,将m%n赋值给n

        4.直到m%n=0为止

 #include <stdio.h>  #include <stdlib.h> int gys(int m,int n);  //公约数 函数声明  int gbs(int m,int n);   //公倍数 函数声明  int main()     {      int m,n,p,q;      scanf("%d%d",&m,&n); #xa0;     p=gys(m,n); //调用函数       printf("最大公约数:%d \n",p);     q=gbs(m,n);       printf("最小公倍数:%d\n",q);     return 0; }            int gys(int m,int n)     {   int p;  //p保存最大公约数  if(m%n==0) //如果能除尽,则n为m,n的最大公约数    p=n;    else   p=gys(n,m%n);  //不能除尽,则再次调用gys函数,此时,n的值传递给m,m%n的值传递给n,直到m%n等于0   return p;   //返回p    return 0;       }              int gbs(int m,int n)   //最小公倍数       {           int k;           k=gys(m,n);    //调用最大公约数的结果            m=m/k;     //将m除以最大公约数            n=n/k;    //n除以最小公倍数return k*m*n;   //返回k*m*n,就是最小公倍数           }


【例子4】 汉诺塔问题

//具体过程不懂得,可以百度吧,小编这就不写了,打字好累!


  

1.    #include<stdio.h>

2.    static int count=0;

3.    void hanoi(char a,char b,char c,int n)

4.    {

5.    if(n==1)

6.    {

7.    printf("%c->%c\n",a,c);

8.    count++;

9.    }

10.else

11.{

12.hanoi(a,c,b,n-1);

13.printf("%c->%c\n",a,c);

14.count++;

15.hanoi(b,a,c,n-1);

16.}

17.}

18.void main()

19.{

20.int n;

21.scanf("%d",&n);

22.hanoi('A','B','C',n);

23.printf("%d\n",count);

24.}

 


 

0 0