Python 递归函数

递归函数定义

递归函数是指一个函数在内部调用了函数本身,这样的函数称之为递归函数。

代码示例
		def outer():
		    print('A')
		    outer()
		
		outer()

1.上面的代码虽然调用了函数本身,但是没有结束的条件,可以理解为死循环。
2.在 python 的最大递归次数是在 1000次 左右,也就是死循环的次数到 1000次 会报错终止循环。
3.当然我们可以改变最大次数,首先导入模块 sys ,使用 sys.getrecursionlimit() 可以看到最大的递
归次数,可以通过 sys.setrecursionlimit() 改变最大递归次数。
所以真正的函数递归应该满足俩个条件:
				1.每次递归 复杂度必须降低    
		    	2.必须要有明确的结束条件

递归函数的应用

代码示例一

		def index(x):
		    if x == 1:
		        return 10
		    return index(x-1) + 2
		
		print(index(2))

1. 示例中,定义了一个函数 index(x) 
2. 在函数中判断 x ,如果 x 为 1,返回 10。若不为 1 返回 index(x-1) + 2
3. 传入实参调用函数并打印
4. 上面的代码其实可以看做为:
       index(3) = index(2) + 2
	   index(2) = index(1) + 2
	   index(1) = 10
5. 也就是说,index(3) = 14, index(3) 一直向 index(1) 递,直到有了确定的值 index(1),后
进行回溯

代码示例二(获取数字和)

		def outer(x):
		    if x > 0:
		        return x + outer(x - 1)
		    else:
		        return x
		
		print(outer(5))


1. 示例二中的结束条件是当 x 为 0 的时候返回 x 。不为 0 的时候返回 x + outer(x - 1)
2. 假设 x 为 3 ,返回的是 3 + outer(2) 
3. 而outer(2) 返回的是 2 + outer(1)4. outer(1) 返回的值是 1 + outer(0)5. outer(0) 有确定的值为 0 ,依次往上回溯就可以得到数字的和。
代码示例三

		def outer(x):
		    if x > 0:
		        return x * outer(x - 1)
		    else:
		        return 1
		
		print(outer(5))

和示例二一样,示例三是累乘。
取出列表里所有的元素

		def outer(x):
		    for i in x:
		        if type(i) is int:
		            print(i)
		        elif type(i) is list:
		            return outer(i)
		
		
		outer([1, [2, [3, [4, [5, [6, [7, [8]]]]]]]])
		
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值