递归阶乘函数

我怎么能在一个递归函数结合这两个函数产生这样的结果:

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

当你看到这两个执行给出一个正确的答案,我只是想使它一个递归函数。

--------------解决方案-------------

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

两行代码:

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

测试:

print fac(4)

结果:

24

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

是短暂的:

def fac(n):
if n == 0:
return 1
else:
return n * fac(n-1)
print fac(0)

尝试这个:

def factorial( n ):
if n <1: # base case
print "%2d! = %d" % (n, n)
return 1
else:
temp = factorial( n - 1 )
print "%2d! = %d" % (n, n*temp)
return n * temp # recursive call

有一件事我注意到的是,你正在返回“1”当n <1,这意味着你的函数将返回1甚至是负数。 您可能希望解决这个问题。

我已经与Python没有经验,但这样的事情?

def factorial( n ):
if n <1: # base case
return 1
else:
f = n * factorial( n - 1 ) # recursive call
print "%2d! = %d" % ( n, f )
return f

这是功课任何机会?

def traced_factorial(n):
def factorial(n):
if n <= 1:
return 1
return n * factorial(n - 1)
for i in range(1, n + 1):
print '%2d! = %d' %(i, factorial(i))

给PEP227读更多的细节。 它的短是,利用Python可以函数中定义的函数。

多一个

def fact(x):
if x == 0:
return 0
elif x == 1:
return 1
else:
return x * fact(x-1)

for x in range(0,10):
print '%d! = %d' %(x, fact(x))

分类:蟒蛇 时间:2012-01-01 人气:0
本文关键词: 蟒蛇,递归阶乘
分享到:

相关文章

  • 递归阶乘程序的复杂性 2012-04-17

    什么是一个递归程序来发现一些阶乘的复杂性n 我的直觉是,这可能是O(n) --------------解决方案------------- 如果你把乘法O(1)然后是O(N)是正确的. 但是请注意,乘以任意长度的两个数字x 是不是O(1)在有限的硬件-如x趋于无穷大,需要乘的时间长(例如,如果你使用Karatsuba的乘法,它的O(x ** 1.585) ). 理论上可以做足够庞大的数字与Schönhage-Strassen的更好,但我承认我没有真正的世界的经验与之一x长度"或"中位数&

  • 返回在蟒蛇递归COI功能列表 2013-10-25

    我无法让我的名单在我的代码返回. 而不是返回列表中,它一直没有回国,但如果我更换打印在ELIF语句中的回报,它打印列表就好了. 我该如何修复呢? def makeChange2(amount, coinDenomination, listofcoins = None): #makes a list of coins from an amount given by using a greedy algorithm coinDenomination.sort() #reverse the list

  • 在列表列表蟒蛇递归没有isinstance(不同的) 2014-09-17

    我有一个数字任意的(但制服)列出的任意列表. (他们是在正的空间,我想绘制其棱角箱的边界坐标,但是这并不重要.)我要生成所有可能的组合列表. 因此:[[1,2],[3,4],[5,6]产生[[1,3,5],[1,3,6],[1,4,5],[1, 4,6],[2,3,5] ...]. 任何人都可以帮助我提高这个代码? 我不喜欢isinstance()调用,但我不能想出一个更蟒蛇十岁上下的方式附加在第一轮中,元素的时候第一个参数(POS)是一个数字列表,而不是一个列表的列表. def recurse

  • 蟒蛇递归问题 2012-02-23

    可能重复: 拼合在Python列表(不规则)名单 你好我建立在Python使用递归的一个小程序,但我被困在解决问题的地方,至少我不知道该怎么排,等待着您的帮助预先感谢您 交织着以下使用递归我想​​打印一个单独的列表在给定的问题的列表. 例 这是我的列表 enter code here [[[13, 7], 90], 2, [1, 100], 8, 6] 预期结果 enter code here[13,7,90,2,1,100,8,6] --------------解决方案------------

  • 设置蟒蛇递归限制功能 2012-05-14

    我有2个解决方案,我需要的功能(实际上是一个方法)递归问题. 我希望它是递归的,但我要的递归限制设置为10和复位它的函数被调用后(或不乱用递归限制在所有). 谁能想到一个更好的办法来做到这一点还是建议使用一个比其他人呢? 我倾向于上下文管理,因为它使我的代码更清洁,没有设置tracebacklimit,但有可能是警告? import sys def func(i=1): print i if i > 10: import sys sys.tracebacklimit = 1 raise Valu

  • 蟒蛇 - 递归调用 2012-11-01

    我有一个类模型设计用于蟒蛇一类人. 当一个人是一个学生,可以有0,1或多个advisors.A的人也可以有其他属性,如姓名,学校,毕业年份,分级他的工作,他获得等学位. 我已设置和获取每个类中的这些属性的方法. 例 set_advisor(个体经营,顾问)将顾问的学生顾问的名单. set_year(个体经营,年)的学生毕业年份设置. 同样get_advisor(个体经营)返回学生的顾问. 等等.. 最后我填充物,并将其命名为人民. 如果我想获得学生的名单谁毕业于某年我只写 print [peop

  • 如何跳过.hg /不用彷徨/ .svn目录,而在蟒蛇递归树 2013-10-24

    我有我一直在拼凑(我的第一个Python先遣部队之一)python脚本. 该脚本递归寻找XCode项目文件的文件夹; 该脚本工作正常,但我想适应它跳过任何.svn文件(或.hg或git的)文件夹,以便它不试图修改源代码库. 下面是递归搜索脚本 for root, dirnames, files in os.walk('.'): files = [f for f in files if re.search("project\.pbxproj", f)] for f in files: f

  • 蟒蛇递归十进制转换为十六进制 2013-11-09

    你会如何​​递归迭代或改变一个十进制为十六进制? 我写了一个示例程序,它没有真正的工作: def ChangeHex(n): if (n < 0): print(0) elif (n<=1): print(n) else: ChangeHex(n / 16) if (n == 15): print("F") if (n == 14): print("E") if (n == 13): print("D") if (n == 12):

  • 在树上+蟒蛇递归问题 2014-03-10

    我想提一提,这是一门功课,但我不是要求有关代码的帮助. 我有这个奇怪的问题. 我想实现一个B树的删除和我有一些递归回归问题 def delete ( tree , node , value ) : if node.leaf == True: # delete value from node return tree elif node.leaf == False and value in node: # do other stuff else : delete(tree,node.Child,va

  • JSON编码器蟒蛇递归引用 2015-02-27

    嘿大家,我不知道我是否做正确的事情在这里,基本上我希望我的两个班是JSON序列化. import json class gpagelet(json.JSONEncoder): """ Holds 1) the pagelet xpath, which is a string 2) the list of pagelet shingles, list """ def __init__(self, parent): if not isinstance

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.380 (s). 10 q(s)