关于递归,我有几句话想说
菜鸟小能手 人气:0递归 递归的结束条件 问题本身可以拆分成更为简单的子问题,而子问题可以通过同样的方法解决。 问题需要有边界,否则会掉进递归死循环。 递归并不高效,大数量级的问题要慎用,你可能永远等不到答案。 1.利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。 def read_char(string,length): if length==0:#这里一定要校验,不然会报错 return print(string[length-1]) read_char(string,length-1) string=input("请输入字符串:") read_char(string,len(string)) 2.递归实现:吓得我抱起了抱着抱着抱着我的小鲤鱼的我的我的我 function Recursion(dept): ("抱着") if dept: return "我的小鲤鱼" else: Recursion(dept) print("的我") print("吓得我抱起了") Recursion(2) 3.递归升序打印1-10 方法一: def func(n): if n>=1: func(n-1) print(n) func(10) 执行结果: >>> def func(n): ... if n>=1: ... func(n-1) ... print(n) ... ... >>> func(10) 2 4 6 8 10 >>> 方法二 def func(n): func(n-1) print(n) if n<1: return def func(n): if n<1: return func(n-1) print(n) 方法二总结:递归结束条件在前面与后面都可以实现递归同样的结果 func(10) 执行结果: >>> def func(n): ... if n<1: ... return ... func(n-1) ... print(n) ... >>> >>> func(10) 2 4 6 8 10 4.递归倒序打印1-10 方法一: def func(n): if n>=1: print(n) func(n-1) func(10) >>> def func(n): ... if n>=1: ... print(n) ... func(n-1) ... ... ... ... >>> func(10) 9 7 5 3 1 >>> 方法二: def func(n): if n<1: return print(n) func(n-1) func(10) >>> def func(n): ... if n<1: ... return ... print(n) ... func(n-1) ... ... >>> func(10) 9 7 5 3 1 >>> 总结:倒序打印中,递归结束条件不管放置哪里都不影响结果。SO,对于递归,我们一定要清楚结束条件是什么,什么时候调用本身
加载全部内容