【问题标题】:Python Program to Find Factorial of Number Using Recursion使用递归查找数的阶乘的 Python 程序
【发布时间】:2021-12-06 23:12:30
【问题描述】:

一个数的阶乘是从 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))

【问题讨论】:

  • 这里有两行代码可以帮助您入门 command = input("enter command: ").split()print command
  • 在输入示例中,IA B 引用了一个尚未使用IV 添加的顶点——它仅出现在第三个输入中。因此,您当前的代码会产生错误。请解释这种情况下所需的行为。
  • 这能回答你的问题吗? Are there a way to use while loop function as a list tracker? and mix with FileI/O? 它基本上和你问的一样,除了维护一个待办事项列表而不是维护一个图表。
  • 非常感谢你们的帮助!!

标签: python algorithm python-2.7 python-requests


【解决方案1】:

如何在 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))

【讨论】:

    【解决方案2】:

    我想知道如何阅读条目和调用函数

    为此,您可以在函数下方添加以下代码:

    # 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 字典有助于将 2 个字母的代码转换为需要调用的方法。由于这些方法的参数都以相同的顺序排列,您可以在列表rest 中捕获它们,并在传递参数时“解包”该列表。只有一件特别的事情需要照顾。两个方法得到一个cost 参数,它必须是数字类型。由于输入被读取为字符串,因此您需要将该成本字符串转换为数字。 if 语句处理这种情况。

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

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

    但是由于您的问题是关于捕获输入和调用函数,所以剩下的问题留给您解决。

    【讨论】:

    • 我怎么能实现输出,既然你谈到了这个主题,rs??
    • 那将是一个不同的问题。您必须计算代码在 graph 对象中收集的顶点和边。如果您无法使其工作,请提出一个新问题,提供您的尝试以及问题所在。
    • 哦,好的。我会在这里尝试
    猜你喜欢
    • 2019-10-22
    • 2021-09-02
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 2016-12-10
    • 2017-05-07
    相关资源
    最近更新 更多