递归阶乘函数

11 投票
15 回答
77468 浏览
提问于 2025-04-16 08:51

我该如何把这两个函数合并成一个递归函数,以得到这个结果呢:

factorial(6)

1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720

这是我当前的阶乘函数代码:

def factorial(n):
   if n < 1:   # base case
       return 1
   else:
       return n * factorial(n - 1)  # recursive call


def fact(n):
   for i in range(1, n+1 ):
       print "%2d! = %d" % (i, factorial(i))

这段代码产生的输出是:

fact(6)

1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720

正如你所看到的,这两个函数的执行都能给我正确的答案,但我只是想把这两个函数简化成一个递归函数。

15 个回答

7
def factorial(n):
    result = 1 if n <= 1 else n * factorial(n - 1)
    print '%d! = %d' % (n, result)
    return result

这段代码是用来处理一些数据的。它的主要功能是从一个地方获取信息,然后对这些信息进行一些操作,最后把结果返回给你。具体来说,它可能会从数据库中提取数据,进行计算,或者把数据格式化成你需要的样子。

在编程中,我们常常需要这样的代码块来帮助我们完成特定的任务。通过使用这些代码,我们可以更高效地处理信息,而不需要每次都从头开始写代码。

总之,这段代码就是一个工具,帮助我们更方便地管理和使用数据。

27

两行代码:

def fac(n):
    return 1 if (n < 1) else n * fac(n-1)

测试一下:

print fac(4)

结果:

24
31

我们可以把这两个功能合并成一个单一的递归函数:

def factorial(n):
   if n < 1:   # base case
       return 1
   else:
       returnNumber = n * factorial(n - 1)  # recursive call
       print(str(n) + '! = ' + str(returnNumber))
       return returnNumber

撰写回答