鱼C论坛

 找回密码
 立即注册
查看: 2223|回复: 11

[已解决]怎么求和一个函数产生的所有结果?

[复制链接]
发表于 2021-1-13 19:29:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题,请问怎么求和一个函数产生的所有结果
最佳答案
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
符合要求
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-13 19:35:42 | 显示全部楼层
看具体情况啊
可以给个例子吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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)

这里的目的是求阶乘的倒数,然后再求所有的阶乘倒数和,不知道第一步设计的对不对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-13 20:01:55 | 显示全部楼层
AresFC 发表于 2021-1-13 19:49
这里的目的是求阶乘的倒数,然后再求所有的阶乘倒数和,不知道第一步设计的对不对

阶乘的倒数和?
还是1+1/2+1/3+1/4+....?
还是不太清楚
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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=?这样
阶乘倒数的和
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
符合要求
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-13 20:47:29 | 显示全部楼层
AresFC 发表于 2021-1-13 20:41
谢谢大佬!能帮忙看下这样写的话哪里错了吗

我先看看哈
你新的帖子我也回答了,一模一样的问题,给个最佳哈
(感觉今天刷疯了哈哈)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

一晚上回答了好多问题哈哈 感谢感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-13 21:15:38 | 显示全部楼层
昨非 发表于 2021-1-13 20:55
搞定了,改了两处

太棒啦!thx!
for i in range(1,m+1):
求问这里的range为什么是从1开始的嘞
我试了下从0开始确实结果不对,但是0对应的recursive()不也是1嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-13 21:34:02 | 显示全部楼层

算上0的话就错了
你可以试一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 19:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表