递归
/* 一: 字符串反转 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 原理图