AresFC 发表于 2021-1-13 19:29:23

怎么求和一个函数产生的所有结果?

如题,请问怎么求和一个函数产生的所有结果

昨非 发表于 2021-1-13 19:35:42

看具体情况啊
可以给个例子吗

AresFC 发表于 2021-1-13 19:49:26

昨非 发表于 2021-1-13 19:35
看具体情况啊
可以给个例子吗

def recursive(n):
    if n==1:
      return 1
    else:
      return (n*recursive(n-1))**(-1)

这里的目的是求阶乘的倒数,然后再求所有的阶乘倒数和,不知道第一步设计的对不对{:10_277:}

昨非 发表于 2021-1-13 20:01:55

AresFC 发表于 2021-1-13 19:49
这里的目的是求阶乘的倒数,然后再求所有的阶乘倒数和,不知道第一步设计的对不对

阶乘的倒数和?
还是1+1/2+1/3+1/4+....?
还是不太清楚

AresFC 发表于 2021-1-13 20:09:13

昨非 发表于 2021-1-13 20:01
阶乘的倒数和?
还是1+1/2+1/3+1/4+....?
还是不太清楚

是求1/1+1/2!+1/3!+1/4!+...+1/n=?这样
阶乘倒数的和

昨非 发表于 2021-1-13 20:32:44

AresFC 发表于 2021-1-13 20:09
是求1/1+1/2!+1/3!+1/4!+...+1/n=?这样
阶乘倒数的和

def recursive(n):#计算1/n!
    if n==1:
      return 1
    else:
      return (1/n*recursive(n-1))

def result(m):   #求和
    if m==1:
      return 1
    else:
      return recursive(m) + result(m-1)

print(result(1))
print(result(2))
print(result(3))
print(result(4))
print(result(5))
亲测结果:
1
1.5
1.6666666666666667
1.7083333333333335
1.7166666666666668
符合要求

AresFC 发表于 2021-1-13 20:41:35

昨非 发表于 2021-1-13 20:32
亲测结果:

符合要求

谢谢大佬!能帮忙看下这样写的话哪里错了吗def recursive(n):
    if n==1 or n==0:
      return 1
    else:
      return n*recursive(n-1)
def mul(m):
    ls=[]
    for i in range(m+1):
      ls.append(1/(recursive(i)))
      return sum(ls)
a=int(input('Please input number:'))
print(mul(a))

昨非 发表于 2021-1-13 20:47:29

AresFC 发表于 2021-1-13 20:41
谢谢大佬!能帮忙看下这样写的话哪里错了吗

我先看看哈
你新的帖子我也回答了,一模一样的问题,给个最佳哈
(感觉今天刷疯了哈哈)

AresFC 发表于 2021-1-13 20:53:40

昨非 发表于 2021-1-13 20:47
我先看看哈
你新的帖子我也回答了,一模一样的问题,给个最佳哈
(感觉今天刷疯了哈哈)

一晚上回答了好多问题哈哈 感谢感谢{:10_275:}

昨非 发表于 2021-1-13 20:55:38

搞定了,改了两处
def recursive(n):
    if n==1 or n==0:
      return 1
    else:
      return n*recursive(n-1)
ls=[]    #这个放在外面,不然每递归一层,都会被覆盖(清空)
def mul(m):
    for i in range(1,m+1):
      ls.append(1/(recursive(i)))
    return sum(ls)   #这个缩进不对,要放到for循环外
a=int(input('Please input number:'))
print(mul(a))

AresFC 发表于 2021-1-13 21:15:38

昨非 发表于 2021-1-13 20:55
搞定了,改了两处

{:10_282:}太棒啦!thx!

for i in range(1,m+1):
求问这里的range为什么是从1开始的嘞
我试了下从0开始确实结果不对,但是0对应的recursive()不也是1嘛

昨非 发表于 2021-1-13 21:34:02

AresFC 发表于 2021-1-13 21:15
太棒啦!thx!




算上0的话就错了
你可以试一下
页: [1]
查看完整版本: 怎么求和一个函数产生的所有结果?