一般递归&尾递归&循环递归

旧街凉风 提交于 2020-01-17 05:27:32
阶乘的一般递归
int factorial(int n){
    if(n<=1)  return 1;
     return (n*factorial(n-1));
}
阶乘的尾递归
int factorial_tail(int n,int res){
    if(n<=1)  return res;
     return factorial_tail(n-1,n*res);
}
阶乘的迭代形式
int factorial_loop(int n){
    int r=1;
    for(int i=1;i<=n;i++){
        r=r*i;
    return r;
}

斐波那契数列递归

斐波那契数列的一般递归
int fibonacci(int n){
    if(n<=3)
        return 1;
    else{
         return fibonacci(n-1)+fibonacci(n-2);
    }
}
斐波那契数列的尾递归
int fibonacci_tail(int n,int acc1,int acc2){
    if(n<2)
        return acc1;
    else
        return fibonacci(n-1,acc2,acc1+acc2);
    }
}
斐波那契数列的循环递归
int fibonacci_loop(int n){
    int a=0;
    int b=1;
    if(n==1)
        return 1;
    if(n==2)
        return 1;
    for(int i=3;i<=n;i++){
        int temp=a+b;
        a=b;
        b=temp;
    }
    return b;
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!