递归的练习
递归的了解实例
1 # 定义一个类(num是需要给出的参数) 2 # 一定要有临界值 3 # 要有递推的关系 4 def digui(num): 5 6 # 打印num 7 print('$'+str(num)) 8 9 # 如果num大于0 10 if num > 0: 11 # 调用自己每次减一 12 digui(num - 1) 13 # 否则 14 else: 15 # 打印*20次(用来分割线) 16 print("*" * 20) 17 18 # 打印num 19 print('$'+str(num)) 20 21 digui(3) 22 # 执行结果 23 $3 24 $2 25 $1 26 $0 27 ******************** 28 $0 29 $1 30 $2 31 $3 32 # 以上的原理是输入3 打印3 判断3是否大于0 符合调用自己-1 得到2 2继续当参数传上去 打印2 判断2是否大于0 符合调用自己-1以此类推 33 # 不满足的情况下打印分隔符 然后把上面的得到结果数据 打印出来
斐波那契数列(黄金分割线)
1 def feb(n): 2 if n == 1: 3 return 1 4 if n == 2: 5 return 2 6 return feb(n-1) + feb(n-2) 7 8 feb(5) 9 # 执行结果 10 8
汉诺塔
1 def hanno(n,a,b,c): 2 if n == 1: 3 print(a , "-->" , c) 4 return None 5 6 if n == 2: 7 print(a,"-->" ,b) 8 print(a, "-->" ,c) 9 print(b,"-->" ,c) 10 return None 11 12 hanno(n-1,a,c,b) 13 print(a, "-->" ,c) 14 hanno(n-1,b,a,c) 15 16 a = "A" 17 b = "B" 18 c = "C" 19 n =3 20 hanno(n,a,b,c) 21 # 执行结果 22 A --> C 23 A --> B 24 C --> B 25 A --> C 26 B --> A 27 B --> C 28 A --> C