Python 怎么定义计算N的阶乘的函数

定义计算N的阶乘的函数

1)使用循环计算阶乘

def frac(n):
  r = 1
  if n<=1:
    if n==0 or n==1:
      return 1
    else:
      print('n 不能小于0')
  else:
    for i in range(1, n+1):
      r *= i
    return r
print(frac(5))
print(frac(6))
print(frac(7))

120

720

5040

2)使用递归计算阶乘

def frac(n):
  if n<=1:
    if n==0 or n==1:
      return 1
    else:
      print('n 不能小于0')
  else:
    return n * frac(n-1)

print(frac(5))
print(frac(6))
print(frac(7))

120

720

5040

3)调用reduce函数计算阶乘

说明:Python 在 functools 模块提供了 reduce() 函数,该函数使用指定函数对序列对象进行累计。

查看函数信息:

import functools
print(help(functools.reduce))
Help on built-in function reduce in module _functools:
reduce(...)
  reduce(function, sequence[, initial]) -> value

  Apply a function of two arguments cumulatively to the items of a sequence,
  from left to right, so as to reduce the sequence to a single value.
  For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates
  ((((1+2)+3)+4)+5). If initial is present, it is placed before the items
  of the sequence in the calculation, and serves as a default when the
  sequence is empty.

import functools
def fn(x, y):
  return x*y
def frac(n):
  if n<=1:
    if n==0 or n==1:
      return 1
    else:
      print('n 不能小于0')
  else:
    return functools.reduce(fn, range(1, n+1))

print(frac(5))
print(frac(6))
print(frac(7))

120

720

5040

# 使用 lambda 简写
import functools
def frac(n):
  if n<=1:
    if n==0 or n==1:
      return 1
    else:
      print('n 不能小于0')
  else:
    return functools.reduce(lambda x, y: x*y, range(1, n+1))

print(frac(5))
print(frac(6))
print(frac(7))

120

720

5040

补充:python求n的阶乘并输出_python求n的阶乘

阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于1808年发明的运算符号,是数学术语。

一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。

下面我们来看一下使用Python计算n的阶乘的方法:

第一种:利用functools工具处理import functools

result = (lambda k: functools.reduce(int.__mul__, range(1, k + 1), 1))(5)
print(result)```

第二种:普通的循环x = 1

y = int(input("请输入要计算的数:"))
for i in range(1, y + 1):
x = x * i
print(x)

第三种:利用递归的方式def func(n):

if n == 0 or n == 1:
return 1
else:
return (n * func(n - 1))
a = func(5)
print(a)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • python3 将阶乘改成函数形式进行调用的操作

    定义一个函数,求一个数的阶乘,比如求5! #方法1,递归 def jc(num): if num==1: return 1 else: return num*jc(num-1) print(jc(5)) #返回120 # 方法2 ,for遍历 def func(num): '求一个数字的阶乘,例如5!' sum=1 for i in range(1,num+1): sum=sum*i #可以简化sum*=i return sum func(5) print(func(5))#返回120 # 方法

  • python求前n个阶乘的和实例

    我就废话不多说了,还是直接看代码吧! i = int(input("input")) sum = 0 if i<1: exit() else: while i>0: b = 2 c = 1 while b<=i: c=b*c b=b+1 sum += c i = i-1 # print(c) print(sum) 补充知识:python 利用递归方法求解n的阶乘和 写程序算出n的阶乘的和 def fn(x): if x==1: return 1 def f(x): i

  • Python阶乘求和的代码详解

    Python阶乘求和的方法 题目描述: 获得用户输入的整数n,输出 1!+2!+-+n!的值. 如果输入数值为0.负数.非数字或非整数,输出提示信息:输入有误,请输入正整数. 方法一: #factTest1 def main(): a = input() sum = 0 if a.isdigit(): n = eval(a) if n > 0: fact = 1 for i in range(1, n+1): fact *= i sum += fact print(sum) else: prin

  • python递归函数求n的阶乘,优缺点及递归次数设置方式

    递归函数两大特点: 1.能够调用函数自身 2.至少有一个出口(结束函数自身调用) 函数实现: def calnum(num): if num != 1: # 递归调用自身函数 csum = num * calnum(num - 1) else: # 设置递归出口 csum = 1 return csum ret = calnum(5) print(ret) 递归函数的缺点: 占用资源多,一般不会优先选择. 一个程序中python默认只允许调用自身1024次,超过这个次数, python解释器会认

  • Python3 实现递归求阶乘

    题目 利用递归方法求5! 程序分析 递归调用即可. def factorial(n): return n*factorial(n-1) if n>1 else 1 print(factorial(5)) 补充:python 求N的阶乘 本题要求编写程序,计算N的阶乘 输入格式: 输入在一行中给出一个正整数 N. 输出格式: 在一行中按照"product = F"的格式输出阶乘的值F,请注意等号的左右各有一个空格.题目保证计算结果不超过双精度范围. 输入样例: 5 输出样例: pr

  • Python 怎么定义计算N的阶乘的函数

    定义计算N的阶乘的函数 1)使用循环计算阶乘 def frac(n): r = 1 if n<=1: if n==0 or n==1: return 1 else: print('n 不能小于0') else: for i in range(1, n+1): r *= i return r print(frac(5)) print(frac(6)) print(frac(7)) 120 720 5040 2)使用递归计算阶乘 def frac(n): if n<=1: if n==0 or n

  • Python递归函数定义与用法示例

    本文实例讲述了Python递归函数定义与用法.分享给大家供大家参考,具体如下: 递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 fact(n)表示,可以看出: fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fact(n-1) * n 所以,fact(n)可以表示为 n * fact(n-1),只有

  • Python迭代器定义与简单用法分析

    本文实例讲述了Python迭代器定义与简单用法.分享给大家供大家参考,具体如下: 一.什么是迭代器 迭代,顾名思义就是重复做一些事很多次(就现在循环中做的那样).迭代器是实现了__next__()方法的对象(这个方法在调用时不需要任何参数),它是访问可迭代序列的一种方式,通常其从序列的第一个元素开始访问,直到所有的元素都被访问才结束. [注意]:迭代器只能前进不能后退 [迭代器的优点]: 使用迭代器不要求事先准备好整个迭代过程中的所有元素.迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之

  • 对python:循环定义多个变量的实例详解

    我们可能会时长碰到这样一个场景,计算得到一个非固定值,需要根据这个值定义相同数量个变量. 实现方式的核心是exec函数,exec函数可以执行我们输入的代码字符串. exec函数的简单例子: >>>exec ('print "hello world"') hello world 可以很清晰的看到,我们给exec传入一个字符串'print "hello world"',exec是执行字符串里面的代码print "hello world&quo

  • Python生成器定义与简单用法实例分析

    本文实例讲述了Python生成器定义与简单用法.分享给大家供大家参考,具体如下: 一.什么是生成器 在Python中,由于受到内存的限制,列表容量肯定是有限的.例如我们创建一个包含一亿个元素的列表,Python首先会在内存中开辟足够的空间来存储这个包含一亿个元素的列表,然后才允许用户去使用这个列表,这就可能会导致以下问题: 1.内存中没有足够的内存空间开存储这个列表,从而导致列表无法创建 2.即使列表成功创建,然而仍会消耗很长的时间,导致程序效率低下 3.若用户只想访问列表前面的几个元素,则后面

  • Python 如何定义匿名或内联函数

    问题 你想为 sort() 操作创建一个很短的回调函数,但又不想用 def 去写一个单行函数, 而是希望通过某个快捷方式以内联方式来创建这个函数. 解决方案 当一些函数很简单,仅仅只是计算一个表达式的值的时候,就可以使用lambda表达式来代替了.比如: >>> add = lambda x, y: x + y >>> add(2,3) 5 >>> add('hello', 'world') 'helloworld' >>> 这里使用

  • Python+SeaTable实现计算两个日期间的工作日天数

    目录 在 SeaTable 表格上新建 Python 脚本 思路 代码 总结 当我们计算两个日期间的间隔天数时,通常是用结束日期减去开始日期,但在实际的项目管理.任务管理.工作计划等场景中,某些时间段会涉及双休日.法定节假日,甚至还有公司自定义的工作时间安排,所以就需要计算出两个日期间的实际工作日天数.比如一个表格中有多条任务,每条任务都有各自的开始日期.计划结束日期或实际结束日期,那么如何自动计算出两个日期间的实际工作日天数,以便做到精细和量化呢. 此时,万能的 Python 就可以出场了,而

  • Python基于checksum计算文件是否相同的方法

    本文实例讲述了Python基于checksum计算文件是否相同的方法.分享给大家供大家参考.具体如下: 假设有2个二进制文件(0.bin, 1.bin),用checksum检验内容是否相同 # coding: utf8 # Python2.6.2 import md5 with open('0.bin', 'rb') as f: s = md5.new(f.read()).hexdigest() with open('1.bin', 'rb') as f: ss = md5.new(f.read

  • python类定义的讲解

    一.类定义: 复制代码 代码如下: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性.如果直接使用类名修改其属性,那么将直接影响到已经实例化的对象 类的私有属性: __private_attrs  两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问.在类内部的方法中使用时 self.__private_attrs类的方法 在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数

  • python通过定义一个类实例作为ftp回调方法

    本文实例讲述了python通过定义一个类实例作为ftp回调方法.分享给大家供大家参考.具体实现方法如下: class Writer: def __init__(self, file): self.f = open(file, "w") def __call__(self, data): self.f.write(data) self.f.write('\n') print data FILENAME = "AutoIndent.py" writer = Writer

随机推荐