2397293790 发表于 2022-10-8 23:15:42

python问题求助

这一道题,除了while循环外。能不能用 for 循环语句或者是其他方法来做?

jackz007 发表于 2022-10-8 23:15:43

本帖最后由 jackz007 于 2022-10-9 12:27 编辑

      for 循环
m = 1
for k in range(int(input('输入 n : ')) , 0 , -1) : m *= k
print(m)
      递归函数
def foo(n) : return n * foo(n - 1) if n else 1
print(foo(int(input('输入 n : '))))

lassiter 发表于 2022-10-9 00:14:07

n=int(input('请输入一个非负整数:'))
result=1
a=n
if a==0:
    result=1
elif a<0:
    print('请输入非负整数!')
else:
    while a>0:
      result=result*a
      a-=1
      
print(f'{n}!的结果为{result}')

lassiter 发表于 2022-10-9 00:21:26

还可以用迭代的方法
def jiecheng(n):
    if n>1:
      return n*jiecheng(n-1)
    else:
      return 1
   
n=int(input('请输入一个非负整数:'))

if n==0:
    result=1
elif n<0:
    print('请输入非负整数!')
else:
    result=jiecheng(n)
      
print(f'{n}!的结果为{result}')

姚乌拉 发表于 2022-10-9 01:35:52

lassiter 发表于 2022-10-9 00:21
还可以用迭代的方法

lz问的是用for怎么写啊

zhangjinxuan 发表于 2022-10-9 07:39:42

递归法
def solve(n):
    if n==0:return 1
    return solve(n-1)*n

solve(int(input()))

kogawananari 发表于 2022-10-9 10:53:46

可以用通项公式{:10_254:}
页: [1]
查看完整版本: python问题求助