首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >递归阶乘函数

递归阶乘函数
EN

Stack Overflow用户
提问于 2010-12-22 02:06:20
回答 14查看 74K关注 0票数 10

如何将这两个函数组合成一个递归函数才能得到这样的结果:

代码语言:javascript
复制
factorial(6)

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

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

代码语言:javascript
复制
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))

此代码生成的输出如下所示:

代码语言:javascript
复制
fact(6)

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

正如您所看到的,这两个函数的执行给出了正确的答案,但我只是想将这两个函数简化为一个递归函数。

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2010-12-22 02:13:08

我们可以将这两个函数组合成一个递归函数:

代码语言:javascript
复制
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
票数 30
EN

Stack Overflow用户

发布于 2014-05-07 01:52:30

两行代码:

代码语言:javascript
复制
def fac(n):
    return 1 if (n < 1) else n * fac(n-1)

测试它:

代码语言:javascript
复制
print fac(4)

结果:

代码语言:javascript
复制
24
票数 26
EN

Stack Overflow用户

发布于 2010-12-22 02:12:56

代码语言:javascript
复制
def factorial(n):
    result = 1 if n <= 1 else n * factorial(n - 1)
    print '%d! = %d' % (n, result)
    return result
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4502429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档