n = int(input('请输入整数n(n>=0):'))
def fact(n):
if n == 0:
sum1 = 1
else:
sum1 = n * fact(n-1)
return sum1
print(fact(n))
我自认为我的代码没打错,它也能求阶乘,但导师还是说错了,大错特错,我很不理解,到底要怎么做?到底错在哪?
n = int(input('请输入整数n(n>=0):'))
def fact(n):
if n == 0:
sum1 = 1
else:
sum1 = n * fact(n-1)
return sum1
print(fact(n))
我自认为我的代码没打错,它也能求阶乘,但导师还是说错了,大错特错,我很不理解,到底要怎么做?到底错在哪?
从计算结果来说,没错。我认为你导师说的错的地方应该是没有对输入做好限制,当然,我不能确定,但是这样递归算我觉得是没问题的。
你这套代码输入负整数的时候代码应该会抛出异常,但你没有做任何的判断和处理。
n = int(input('请输入整数n(n>=0):'))
def fact(n):
if isinstance(n, int):
if n == 0:
sum1 = 1
elif n < 0:
print('负数没有阶乘')
return None
else:
sum1 = n * fact(n - 1)
return sum1
else:
print('抱歉,输入类型错误')
if __name__ == '__main__':
a = fact(n)
if isinstance(a, int):
print('{n}的阶乘是{a}'.format(n=n, a=a))
else:
pass