您的位置:首页 > 编程语言 > C语言/C++

C语言使用非递归和递归函数分别实现阶乘,斐波那契,最大公约数

2016-06-23 21:34 477 查看
阶乘:

#include <stdio.h>

int fac(int n);

int facn(int n);

int main()

{

    int n=0;

    int y=0;

    printf("input an integer number:");

    scanf("%d",&n);

    y=fac(n);

    printf("%d!等于%d\n",n,y);

    y=facn(n);

    printf("%d!等于%d\n",n,y);

        

    return 0;

}

int fac(int n)

{

    int f=0;

    if(n<0)

    {

        printf("n<0,data error!\n");

    }

    else if(n==0||n==1)

    {

        f=1;

    }

    else

    {

        f=fac(n-1)*n;

    }

    return f;

}

int facn(int n)

{

    int f=0;

    int i=0;

    if(n<0)

    {

        printf("n<0,data error!\n");

    }

    else if(n==0||n==1)

    {

        f=1;

    }

    else

    {

        f=1;

        for(i=2;i<=n;i++)

        {

            f=f*i;

        }

    }

    return f;

}

斐波那契:

/*

    fib:

    1 1 2 3 5 8 13 ......

 */

#include <stdio.h>

int fib(int n);

int fibn(int n);

int main()

{

    int nNum=0;

    printf("请输入fib的第几项:\n");

    scanf("%d",&nNum);

    int ret=0;

    ret=fib(nNum);

    printf("ret:%d\n",ret);

    ret=fibn(nNum);

    printf("ret:%d\n",ret);

    return 0;

}

int fib(int n)

{

    if(n>2)

    {

        return fib(n-1)+fib(n-2);

    }

    else

    {

        return 1;

    }

}

int fibn(int n)

{

    int s1=1;//s1是前一项

    int s2=1;//s2是后一项

    int s=0;

    int i=0;

    for(i=3;i<=n;i++)

    {

        s=s1+s2;

        s1=s2;

        s2=s;

    }

    return s;

}

最大公约数:

#include <stdio.h>

int gcd(int a,int b)

{

    if(a%b==0)

    {

        return b;

    }

    else

    {

        return gcd(b,a%b);

    }

}

int gcdn(int a,int b)

{

    int tmp=0;

    while(b!=0)

    {

        tmp=a%b;

        a=b;

        b=tmp;

    }

    return a;

}

int main()

{

    int m=0;

    int n=0;

    printf("请输入2个整数:\n");

    scanf("%d%d",&m,&n);

    int ret=0;

    ret=gcd(m,n);

    printf("ret:%d\n",ret);

    ret=gcdn(m,n);

    printf("ret:%d\n",ret);

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 函数