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

简介: 一、先举2个栗子:(1)阶乘(2)斐波那契数列递归

一、先举2个栗子:

(1)阶乘

阶乘的一般递归
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;
}

(2)斐波那契数列递归

1.
斐波那契数列的一般递归
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;
}

二、递归及其优化

https://mp.weixin.qq.com/s/mJ_jZZoak7uhItNgnfmZvQ

相关文章
|
6月前
|
算法 C语言
c递归
c递归
43 2
|
JavaScript 前端开发
什么是递归?
什么是递归?
107 0
|
Java 数据安全/隐私保护 决策智能
字符串全排列(递归)
字符串全排列,递归的应用
156 0
|
算法 Python
递归的使用
递归的使用
53 0
|
机器学习/深度学习 BI
递归问题
递归问题
|
存储 Serverless 开发者
递归的理解与实现
递归的理解与实现
递归的理解与实现
|
机器学习/深度学习 算法 物联网
一文看懂递归
一文看懂递归