python算法:青蛙跳台阶

一,认识递归函数

1,什么是递归?
递归的工作原理是,如果函数需要处理的问题大小合适,则直接求解并返回结果,
否则将问题分解成两个或多个更小的子问题,并对子问题进行相同的处理,
直到问题无法分解为止

2,什么是递归函数:
递归函数(recursive function)是指在函数体中可以调用自己的函数

3,语法

def fn():
    # ...
    if condition:
        # 停止自我调用
    else:
        fn()
    # ...

4,递归函数的优点和缺点

递归函数的优点:它们可以帮助程序员在处理复杂问题时提供一种简单且易懂的解决方案。
递归函数使代码具有可读性和可重用性,
而且可以使用递归函数解决使用其他方法难以处理的问题。
递归函数的缺点: 递归函数可能会在运行时占用较多的系统资源,
因为它们需要在堆栈上存储多个函数调用
其次,递归函数可能导致代码变得不容易理解,
因为它具有一定的复杂度

二,青蛙跳台阶的题目和解析

1,题目

一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。
求该青蛙跳上一个 n 级的台阶总共有多少种跳法?

2,解析

总结:

当青蛙第一次跳一级台阶时,
有f(n-1)种跳法,
当青蛙第一次跳二级台阶时,
有f(n-2)种跳法
所以在n>2时,
返回f(n-1)+ f(n-2)即可

注意它的形式:
1,2,3,5,8,13,21, 34,55,89…
与斐波那契数列很相似,
它也可以用循环来解决:

说明:刘宏缔的架构森林—专注it技术的博客,
网址:https://imgtouch.com
本文: https://blog.imgtouch.com/index.php/2024/03/17/python-suan-fa-qing-wa-tiao-tai-jie/
代码: https://github.com/liuhongdi/ 或 https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: 371125307@qq.com

三,编写代码

1,递归函数实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 递归函数
# n: 要跳的台阶数
def jump(n):
    if n <= 0:    # 值小于等于0时,返回0,递归终止
        return 0
    elif n == 1# 值小于等于1时,返回1,递归终止
        return 1
    elif n == 2# 值小于等于2时,返回2,递归终止
        return 2
    else:      # 值大于2时,返回跳n-1级和跳n-2级时的和
        return jump(n - 1) + jump(n - 2)
 
 
num = int(input("请输入青蛙要跳的台阶数:"))
print(f"跳{num}级台阶,共有跳法{jump(num)}种")

运行结果:

请输入青蛙要跳的台阶数:8
跳8级台阶,共有跳法34种

2,循环实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# n: 要跳的台阶数
def jump(n):
    if n == 1:
        return 1
    elif n == 2:
        return 2
    pre1 = 1  # 前两个数中的第1个
    pre2 = 2  # 前两个数中的第2个
    res = 0   # 跳法的数量
 
    for i in range(3, n + 1):
        res = pre1 + pre2
 
        pre1 = pre2
        pre2 = res
    return res
 
 
num = int(input("请输入青蛙要跳的台阶数:"))
print(f"跳{num}级台阶,共有跳法{jump(num)}种")

运行结果:

请输入青蛙要跳的台阶数:8
跳8级台阶,共有跳法34种
posted @ 2024-05-15 10:39  刘宏缔的架构森林  阅读(93)  评论(0编辑  收藏  举报