递归函数

起初并不知道递归到底是个什么概念,为了方便理解,我放张动图在这里。

在这里插入图片描述

理解是什么之后,就先写了一个求阶乘的一个代码。

	#!/usr/bin/python3
	
	sumnum=1
	def fun(num):    
	    global sumnum
	    sumnum=sumnum*num
	    num=num-1
	    if num==1:
	        return sumnum
	    else:
	        return fun(num)
	n=int(input('input a number:'))
	print(fun(n))

我有个朋友也是这样写的,但是它的问题就在于调用fun()函数时,没有写return,导致了最后输出的结果是None。我自己看了看Python里函数的return的应用,再自己试了一试就发现了问题所在。
首先Python里函数如果不写return的值时,是会返回一个NoneType类型的None值,接着就是问题所在了,写了return后,就表示本次函数调用已经结束,就会一层层的运算,然后每次运算完把值返回给下一次函数调用,当条件满足时,结束函数调用,返回最后结果。
但是如果不写return的话,是会有运算结果的,但是一次次的调用,就像是俄罗斯套娃那种一样,前面的函数调用并没有结束,所以最后一次return的是sumnum,然后再往上一次返回时,返回的是None,后面依此类推,最后返回的值是None。
以后在写函数,调用函数时,一定要注意返回值的用法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值