递归因子函数

use*_*225 10 python recursion factorial

如何将这两个函数组合到一个递归函数中以获得此结果:

factorial(6)
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
Run Code Online (Sandbox Code Playgroud)

这些是代码

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
Run Code Online (Sandbox Code Playgroud)

正如你看到这两个的执行给出了正确的答案,我只想把它变成一个递归函数.

pyt*_*Foo 28

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
Run Code Online (Sandbox Code Playgroud)


mar*_*nas 24

2行代码:

def fac(n):
    return 1 if (n < 1) else n * fac(n-1)
Run Code Online (Sandbox Code Playgroud)

测试一下:

print fac(4)
Run Code Online (Sandbox Code Playgroud)

结果:

24
Run Code Online (Sandbox Code Playgroud)


小智 6

一个简短的:

def fac(n):
    if n == 0:
        return 1
    else:
        return n * fac(n-1)
print fac(0)
Run Code Online (Sandbox Code Playgroud)


Wil*_*hen 5

def factorial(n):
    result = 1 if n <= 1 else n * factorial(n - 1)
    print '%d! = %d' % (n, result)
    return result
Run Code Online (Sandbox Code Playgroud)