用递归求数的阶乘的Python程序



一个数的阶乘是从1到该数的所有整数的乘积。

例如,6的阶乘是12345*6 = 720。阶乘对负数没有定义,0的阶乘是1,0 !

= 1。
def recur_factorial(n):
if n == 1:
return n
else:
return n*recur_factorial(n-1)
num = 7
# check if the number is negative
if num < 0:
print("Sorry, factorial does not exist for negative numbers")
elif num == 0:
print("The factorial of 0 is 1")
else:
print("The factorial of", num, "is", recur_factorial(num))

我只是想知道如何读取条目和调用函数

为此,您可以在函数下面添加以下代码:
# main program
method = {
"IV": add_node,
"IA": add_edge,
"RV": delete_node,
"RA": delete_edge
}
numinputlines = int(input())
for _ in range(numinputlines):
instruction, *rest = input().split()
if len(rest) == 3:  # There is a cost:
rest[-1] = int(rest[-1])
method[instruction](*rest)

method字典帮助将两个字母的代码翻译成需要调用的方法。由于这些方法的参数顺序相同,您可以将它们捕获到列表rest中,然后"解包"。传递参数时的列表。只有一件特别的事需要处理。两个方法得到一个cost参数,它必须是数字类型。由于输入是作为字符串读取的,因此需要将该成本字符串转换为数字。if语句处理这种情况。

这应该回答了你的问题,但它并没有完成练习。您仍然需要调试代码。例如,当前你的代码将在你给出的示例输入上引发异常——vertex "B"在IA B A 1中被IV B引用之前

此外,您还需要添加生成输出的代码。

但是因为你的问题是关于捕获输入和调用函数,我把剩下的留给你去解决。

如何在Python中计算整数的阶乘?请注意,阶乘函数仅为正整数定义;因此,您还应该检查n>= 0和isinstance(n, int)。否则,分别引发ValueErrorTypeError

def factorial(n): 
if(not isinstance(n, int) or n < 0):
raise ValueError("Invalid argument")
if (n==1 or n==0):          
return 1      
else:          
return (n * factorial(n - 1)) 

# Driver Code 
num = int(input("Please enter a number"))
print("Factorial : ",factorial(num))

相关内容

  • 没有找到相关文章