最近要做毕设 递归生成谢尔宾斯基分形
发现自己基础还是很薄弱的,去补了递归知识
#高斯计数问题
从1计算到100 问题
import math #高斯小朋友计算 1到100 def myfun(i): if i >0: return i+myfun(i-1) else: return 0 print(myfun(100))
以上问题是由一个函数myfun
如果i大于0的情况 则返回i这个数 加上 执行i-1
直到i等于0或者小于0
我们先执行一遍
函数myfun(100)
得到 100+myfun(99)
递归调用myfun(99),此时i变为了99 得到99+myfun(98)
于是 直到i等于0
可得100+99+98+.....+1 = 5050
汉诺塔问题
假设有这样一个图
A B C为三个区域
A上放着一个大的矩形 一个小的矩形
我们需要把A上的方块移动到C
规则如下:
小的不能放在大的下面
每次只能移动一个
于是 我们可以实现的步骤为
先把小的从A移到B 再把大的从A移到C
最后把小的从B移到C
代码实现为
#汉诺塔问题 def hanoi(n,A,B,C): if(n == 1): print('移动 从 %c 到%c'%(A,C)) else: hanoi(n-1,A,C,B) print('移动 从 %c 到%c'%(A,C)) hanoi(n-1,B,A,C) hanoi(3,'A','B','C')
由大佬的视频里找到了好用的手写软件