递归
def factorial(n):if n == 1:
return 1
else:
return n*factorial(n-1)
number = int(input('请输入一个整数:'))
result = factorial(number)
print(f'{number}的阶乘是:{result}')
这个代码一次只能输入一个数,如果我想一直输数,应该如何使用while循环
参考代码:
def factorial(n):
if n == 1:
return 1
else:
return n*factorial(n-1)
while True:
number = input('请输入一个整数(直接回车退出程序):')
if number == "":
break
result = factorial(int(number))
print(f'{number}的阶乘是:{result}') 不,不是这样的,递归的话不能用微循环的话是在是函数调用自己的函数。 想用一直问的话,你要在函数里面调用自己就是函数调用函数。 Twilight6 发表于 2022-2-12 12:45
参考代码:
衣柜不是循环,是调用自己。 给你推荐一篇文章。 https://fishc.com.cn/forum.php?mod=viewthread&tid=208562&extra=page%3D1&mobile=2 记住递归并不是循环,它是函数调用自己,而且函数加有判断。到调用自己到一定程度的时候立即停止。 你有什么不懂的可以问我亲,请你给我个最佳答案,亲。 shiyouroc 发表于 2022-2-12 13:35
衣柜不是循环,是调用自己。
认真看代码~
factorial 函数就是递归函数
factorial = lambda n: n if n == 1 else n*factorial(n-1)
while True:
try: print(factorial(int(input("请输入一个整数:")))) # 如果输入不是整数,则退出
except: break shiyouroc 发表于 2022-2-12 13:40
你有什么不懂的可以问我亲,请你给我个最佳答案,亲。
有点强迫了... 傻眼貓咪 发表于 2022-2-12 14:04
我想问一下try在这里有什么作用吗,或者说为什么要用try 本帖最后由 傻眼貓咪 于 2022-2-12 16:53 编辑
Lijingyang 发表于 2022-2-12 15:41
我想问一下try在这里有什么作用吗,或者说为什么要用try
try ... except ... 是异常处理。
try:
代码 xxx
except:
如果代码 xxx 有异常,则执行这里的代码
所谓的异常有很多种,比如 13/0,或 int("Hello World) 等 傻眼貓咪 发表于 2022-2-12 16:50
try ... except ... 是异常处理。
try:
那您为什么会想到用try ...except了,直接print也可以打印得到结果耶,原谅喜欢刨根问底{:7_112:} 本帖最后由 傻眼貓咪 于 2022-2-12 17:59 编辑
Lijingyang 发表于 2022-2-12 17:37
那您为什么会想到用try ...except了,直接print也可以打印得到结果耶,原谅喜欢刨根问底
不要紧。
因为考虑到用户可能输入:(太多因素了)
字符串,如:"Hello World"
字符,如:'a' 或 '@'
数字太大,超于可算出的范围,如:123456789123456789123456789123 .....
这样一来,就不用把所有输入可能一行一行写出来,如:
if ord(number) < '0' and ord(number) > '9':
xxxx
elif int(number) > xxxxxxxxxx:
xxx
elif xxxxxx:
xxxxx
else:
xxxx
直接用 try(代码可以运行就运行,不可以就退出,编译器也不会报错)
当然如果你认为用户不调皮,完全跟着条件输入,你也可以不用 try ... except ...(但如果我是用户,我会很皮的{:10_277:} ) 傻眼貓咪 发表于 2022-2-12 17:57
不要紧。
因为考虑到用户可能输入:(太多因素了)
字符串,如:"Hello World"
哈哈哈,谢谢 Lijingyang 发表于 2022-2-12 18:11
哈哈哈,谢谢
不客气 {:10_257:}
页:
[1]