python - 使用Python递归函数求一个数的因数

标签 python recursion factors

我有一个作业,要求我使用 Python 递归函数以以下形式输出用户输入的数字的因子:

输入一个整数:6 <-- 用户输入
6的因数是:
1
2
3
6

我现在感觉有点迷失,在过去的两个小时里我尝试自己做所有事情,但就是无法到达那里。如果可能的话,我宁愿被推向正确的方向,而不是像我想学习的那样显示我的代码需要更改的地方

下面是我的代码:

def NumFactors(x):
  for i in range(1, x + 1):
    if x == 1:
        return 1
    if x % i == 0:
        return i
    return NumFactors(x-1)


x = int(input('Enter an integer: '))

print('The factors of', x, 'are: ', NumFactors(x))

最佳答案

在您的代码中,问题是方法内的 for 循环。循环从 1 开始,转到第一个 if 条件,一切都在那里终止。这就是为什么它只打印 1 作为输出,这是您自己的代码的稍微修改的版本。这应该有帮助。如果您有任何疑问,请随时询问。

def factors(x):
    if x == 1:
        print(1 ,end =" ")
    elif num % x == 0:
        factors(x-1)
        print(x, end =" ")
    else:
        factors(x-1)

x = num = int(input('Enter an integer: '))

print('The factors of', x, 'are: ',end =" ")
factors(x)

关于python - 使用Python递归函数求一个数的因数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54830616/

相关文章:

algorithm - 需要知道这是否是一种独特的划分方式?

c - 计算整数的所有因子的最快算法是什么?

python - 如何将参数传递给 Python 模块中的主函数?

python - 等到元素不出现 - Selenium

Python如何从列表中包含多个元素的json文件中获取元素

rapply 到 R 中数据框的嵌套列表

python - 如何通过 Python 使用 requests 模块以 json 格式打印 Twitter 句柄?

Haskell - 递归堆栈

c++ - 如何在没有备忘录的情况下使用内存来执行此递归代码?

java - 使用递归方法获取因子