递归阶乘函数
我该如何把这两个函数合并成一个递归函数,以得到这个结果呢:
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