先来看一段递归时的代码:
temp
= int(input('输入一个正整数: '))
def factorial(n
):
if n
== 1:
print(1)
else:
print( n
* factorial
(n
-1))
factorial
(temp
)
起初我的想法是,在factorial()函数里,直接用print打印,在后续直接调用函数就可以得到结果了。 但是,在实际调用时报错如下: TypeError: unsupported operand type(s) for *: 'int' and 'NoneType' 意思是,不支持int类型和非类型数据的运算。 这句话本身是可以理解的,但是究竟错在哪里呢? 于是我又按照正常的格式写了一次代码:
temp
= int(input('输入一个正整数: '))
def factorial(n
):
if n
== 1:
return 1
else:
return n
* factorial
(n
-1)
print(factorial
(temp
))
这次重新运行,就没有报错了。 这说明,是函数里的print出了问题。 于是,我仔细查了print函数的用法。print函数可以输出 各种单个数据类型,但是没有打印组合数据类型的用法。所以,函数里还是老老实实的用return,然后在调用的时候 加上print打印出结果,避免踩雷。 不知道有没有小伙伴和我遇到同样情况的,我的解释仅供参考,毕竟我也是python的初学者,理解还不够深刻。谢谢~