爬楼梯 -- 斐波那契数列,尾递归

简介: 爬楼梯 -- 斐波那契数列,尾递归

使用尾递归解决问题

爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

1阶台阶 1种方法
2阶台阶 2种方法
3阶台阶 3种
4阶台阶 5种
5阶台阶 8种
。。。
所以可以转换成斐波那契数列进行求解
def weiT(n,a=1,b=2,c=3):
    if n==1:
        return 1
    elif n==2:
        return 2
    else:
        if n==c:
            return a+b
        else:
            return weiT(n,a=b,b=a+b,c=c+1)

斐波那契

def weiF(n,a=1,b=1,c=3):
    if n < 3:
        return 1
    else:
        if n == c:
            return a+b
        else:
            return weiF(n,a=b,b=a+b,c=c+1)
相关文章
|
存储 算法
蓝桥杯:递归 与 例题:斐波那契数列及优化与应用
蓝桥杯:递归 与 例题:斐波那契数列及优化与应用
80 0
|
5月前
|
存储 算法
精益求精——斐波那契数列的logn解法
精益求精——斐波那契数列的logn解法
71 0
|
6月前
|
机器学习/深度学习 算法
|
6月前
函数递归详解----跳台阶、斐波那契数列、汉诺塔问题
递归的思想:把⼀个⼤型复杂问题层层转化为⼀个与原问题相似,但规模较⼩的⼦问题来求解;直到⼦问题不能再被拆分,递归就结束了。所以递归的思考⽅式就是把⼤事化⼩的过程。递归中的递就是递推的意思,归就是回归的意思。
|
算法 C++
剑指offer(C++)-JZ10:斐波那契数列(时间复杂度O(logn)解法)
剑指offer(C++)-JZ10:斐波那契数列(时间复杂度O(logn)解法)
|
机器学习/深度学习 算法 Java
从斐波那契数列到递归
大家好,我是王有志。今天我们要通过经典数学问【题斐波那契数列】来学习非常重要的编程技巧:递归。
150 1
从斐波那契数列到递归
汉诺塔?爬楼梯?斐波那契?知道递归就够了
汉诺塔?爬楼梯?斐波那契?知道递归就够了
97 0
|
算法
斐波那契数列两种算法和青蛙跳台阶的两种实际问题
当我们看到这样的题时,心想就是一个简单的递归调用么。 但是,我们要看到这种算法的不足之处——效率低下。 首先简单的介绍一下 :
96 0
|
前端开发 程序员 测试技术
斐波那契数列的多种解法
斐波那契数列的多种解法
斐波那契数列的多种解法