还是之前关于f(x)=xf(x-1)的问题

aaronong 发布于 2012/11/28 11:36
阅读 230
收藏 0

还是之前关于f(x)=xf(x-1)的问题,

1、为啥直接写成如下不行(不带==0的if)?

def f(x):
        return x * f(x - 1) 
print f(5)

2、当x==0的时候为啥return 1和return 2不同的值会导致后面计算f(6)的值不一样?难道x==0的时候f(x)的值会导致f(x)的表达式不再是x!阶乘?

def f(x): 
    if x == 0: 
        return 1 
    else: 
        return x * f(x - 1) 
print f(6)

加载中
0
SErHo
SErHo
第一个,因为没有结束条件,所以会一直递归下去,超出递归深度而失败。 第二个,0!=1!=1.
0
杨同学
杨同学

第二个:因为

f(6) = 6 * f(5) = 6 * 5 * f(4) = 6 * 5 * 4 * f(3) = 6 * 5 * 4 * 3 * f(2) = 6 * 5 * 4 *3 * 2 * f(1) = 6 * 5 * 4 * 3 * 2 * 1 * f(0)

你说跟f(0)的值有没有关系?


0
D
Duke.Yee

f(x)=xf(x-1)

我在想如果x< 0会怎么样

是不是这样会更保险,或者x< 0的时候提示 error

if x <= 0:
  return 1

返回顶部
顶部