xcxd.net
当前位置:首页 >> 用python编程n阶乘 >>

用python编程n阶乘

def jieshen(n): sum = 1 while sum<n: for i in range(1, n+1): sum = sum*i return sum print jieshen(5)

# 麻烦把题目打清楚, 对于阶乘可以用 math 库的 factorial()# 下面是根据前面的题意所写from math import factorialm_f = factorial(int(input()))n_f = factorial(int(input()))print((m_f + n_f) / (m_f - n_f))

阶乘有一个经典的递归调用算法.以下是示例代码.def jiecheng(n): if n==1 or n==0: return 1 return n*jiecheng(n-1) print('5的阶乘为%s'%jiecheng(5))

def factorial(n): if n == 1: return 1 else: return n * factorial(n - 1) input_num = input() try: with open('jc.txt', 'w') as file: file.write(str(factorial(int(input_num)))) except IOError as e: print('error', e)

用!表示阶乘,不重置的话,计算出来的是1!.因为不重置,每次都在前一项的基础上乘了一个i!,但是我们只需要在前一项的基础上乘以i就行了,所以多乘了.重置的话,虽然是正确的,但是多此一举嘛,搞什么二重循环?觉得cpu太快了么?已经算好4!了,算5!的阶乘,只需要在4!上乘以5就行了,非得重置为1,然后再乘1 2 3 4 5,太浪费了……正常的写法应该是:int n=0, a=1;for (int i=1; i

def fact(n): if n==0: return 1 else: return n*fact(n-1)n=int(input()) print(fact(n))

预先定义int aaa=1;aaa=i*aaa;while(i<=5) printf(“%d”,aaa);

import math m = int(input("请输入第一个数字:")) n = int(input("请输入第二个数字:")) if m < 0 or n < 0 or m - n < 0:print("负数是没有阶乘,请重新输入!") else:result = math.factorial(m) / math.factorial(n) / math.factorial(m - n) print("按照公式C(m, n) = m!/n! /(m - n)!,C({0},{1})的答案为 {2}".format(m, n, result))

total = 1 for num in range(1,101): if num % 2 == 0: total = total * num print(total)

用for循环就可以了.

网站首页 | 网站地图
All rights reserved Powered by www.xcxd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com