递归

 

/*
一: 字符串反转
    1 code
    2 原理图
二: 累加
    1 code
    2 原理图
三: 斐波那契数列
    1 code
    2 原理图
*/

 

 

/*
思想
    1 要解决什么问题
    2 结束条件
    3 函数等价关系式
*/

 

一: 字符串反转

  1 code

def traverse(s):
    print(s)
    if len(s) == 0:
        return s
    return traverse(s[1:]) + s[0]  # 位置不同; 后面s[0] 在前面s[0]的前面
    # return (s[-1]) + traverse(s[:-1]) # 等级于上一行

if __name__ == '__main__':
    s = "abcd"
    s1 = traverse(s)
    print(s1)

 

 

  2 原理图

 

 

 

 

 

二: 累加

  1 code

def test(n):
    if n == 1:
        return 1
    return n + test(n-1)

if __name__ == '__main__':
    print(test(100))    # 5050

 

2 原理图

 

 

三: 斐波那契数列

  1 code

# 斐波那契数列: 1、 1、 2、 3、 5、 8、 13
def fn(n):
    if n == 1 or n == 2:
        return 1
    # 公式 fib(n) = fib(n - 1) + fib(n - 2)
    return fn(n-1) + fn(n - 2)

if __name__ == '__main__':
    n = fn(6)
    print(n)    # 8

 

  2 原理图

 

posted @ 2023-04-28 21:33  火焰马  阅读(13)  评论(0编辑  收藏  举报