仅使用一些基本代码(阶乘),但不能引用它来使我了解如何实现正确的结果。每个循环的结果似乎都没有存储在任何地方-那么代码如何记住迭代值? (我知道有模块-这只是一个逻辑练习)
def factoral2(num):
if num == 0:
return 1
return num * factoral2(num-1)
print(factoral2(int(input(“输入数字以查找阶乘:”))))
def factoral(num): 数字= [] 对于范围(0,num)中的i: number.append(num) num = num-1 打印(数量) 产品= 1 对于x数: 产品* = x 退货
print(factoral(int(input(“输入数字以查找阶乘:”))))
两者都可以-只是试图了解优化版本的逻辑
答案 0 :(得分:0)
这是一个递归函数,它自己调用num - 1
作为参数。
提供的功能:
def factoral2(num):
if num == 0:
return 1
return num * factoral2(num-1)
“开始扩展”到此:
def factoral2(num):
result = 1
while (num != 0):
result *= num
num -= 1
return result
value = factoral2(4)
如下所示:
num = 4
num = 3
num = 2
num = 1
num = 0; return 1
result = 1
result = 2 * 1
result = 3 * 2
result = 4 * 6
value = 24
答案 1 :(得分:0)
好的,我们来看一个示例,假设user inputs 2 -> num=2
。
首先,我们必须逐步降低(本质上我们需要num等于0)
factorial(2)
,然后检查if语句是否为假。factorial(2) = return num * factorial(num-1) = return 2 * factorial(1)
factorial(1)
,并检查if语句== false factorial(1) = return num * factorial(num-1) = return 1* factorial(0)
factorial(0)
,并检查if语句== true factorial(0) = 1
现在我们可以开始构建
factorial(0) = 1
factorial(1) = return 1* factorial(0) = return 1* 1 = return 1
factorial(1) = 1
factorial(2) = return 2* factorial(1) = return 2 * 1 = return 2
factorial(2) = 2
答案 2 :(得分:0)
感谢Andreas和below_avg_st的帮助。 现在变得更加有意义。
据我所见:
当循环中断时-(因为X = 0)将值分配为1-退出循环。
def test(x):
if x != 0:
return x * test(x-1)
else:
return 1
test(4)
感谢大家的帮助