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

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

使用尾递归解决问题

爬楼梯

假设你正在爬楼梯。需要 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)
相关文章
|
10月前
|
Java C++
简单斐波那契
简单斐波那契
88 0
|
存储 算法
蓝桥杯:递归 与 例题:斐波那契数列及优化与应用
蓝桥杯:递归 与 例题:斐波那契数列及优化与应用
102 0
|
5月前
|
存储 算法
递归算法
【10月更文挑战第11天】递归算法是一种强大而又具有挑战性的算法技术。通过深入理解和掌握递归的原理、应用以及优化方法,我们可以更好地利用它来解决各种问题,并在编程实践中发挥其独特的优势。同时,我们也要注意递归算法可能带来的性能和栈空间问题,通过合理的设计和优化来提高算法的效率和稳定性。
76 1
|
机器学习/深度学习 人工智能 算法
深入理解递归算法
概述 定义 计算机科学中,递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集 In computer science, recursion is a method of solving a computational problem where the solution depends on solutions to smaller instances of the same problem. 比如单链表递归遍历的例子: void f(Node node) { if(node == null) { return; } print
90 0
|
10月前
斐波那契(快速矩阵幂)
斐波那契(快速矩阵幂)
48 0
|
10月前
|
算法
递归算法练习
递归算法练习
46 0
|
算法 Java
快速幂(非递归)
快速幂(非递归)
103 0
汉诺塔?爬楼梯?斐波那契?知道递归就够了
汉诺塔?爬楼梯?斐波那契?知道递归就够了
117 0
|
算法
斐波那契数列两种算法和青蛙跳台阶的两种实际问题
当我们看到这样的题时,心想就是一个简单的递归调用么。 但是,我们要看到这种算法的不足之处——效率低下。 首先简单的介绍一下 :
125 0
|
算法
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
112 0
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)