关于递归
这几日作递归题,一直都没什么思路,常常需要看看答案才能懂
幸亏,答案看着看着,好像可以大概总结出一套模板:1
2
3
4
5
6
7
8def fun(arguments):
赋初值,定义容器
if conditions条件:
返回值,递归,改变参数,‘循环体’
(返回值处理)
return 返回值
else:
return 开始递归
典例:1
2
3
4
5
6
7
8def Bindec(x):
result = ' '
if x :
result = Bindec(x // 2)
return result + str(x % 2)
else:
return result
print("二进制数为:",Bindec(1024))
递归分为递推和回推,注意返回条件设置
总结出了模板,做题居然就不费劲了,我觉得主要是把上面的理论成功转化为了编程理论,所以思路顺畅了。
但模板还比较死,注意变通,如:
1 | # 拆分参数 |
这道题标答中并不像我返回并放好列表元素,它递归直接返回元素然后放入外部的列表中。但其实很多标答都和我的模板一样,只是了简化语句,大多是简化递推那部分,比如下例简短而有代表性:1
2
3if n != 1:
a = age(n-1)
return a + 2 #这两句可简化为一句:return age = (n-1)+2
PS:
list.insert()方法的返回值为空类型!
2018-1-7 17:49
最近做的文件处理题目,用到递归且比较独特,于是前来补充:
独特之处在于这种递归没有返回值,
如下是搜索返回文件的程序:
1 | import os |
2018-04-28
多年以后的现在,跟杜市容了解了一下一些算法的东西