鱼C论坛

 找回密码
 立即注册
楼主: 冬雪雪冬

[技术交流] Python:每日一题 160

[复制链接]
发表于 2018-3-9 23:12:07 | 显示全部楼层
本帖最后由 checkily 于 2018-3-9 23:13 编辑
  1. def fun(n):
  2.     if n == 1:
  3.         return 1
  4.     else:
  5.         return fun(n-1)**2+n
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-9 23:34:50 | 显示全部楼层
做这个真没有思路  算法差一些 我还需要练习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-10 00:09:53 | 显示全部楼层
  1. def fun(n):
  2.     if n == 1:
  3.         return 1
  4.    
  5.     else:
  6.         return (fun(n-1)) ** 2 + n
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-10 09:21:32 From FishC Mobile | 显示全部楼层
本帖最后由 鱼油127327 于 2018-3-10 09:23 编辑
  1. def fun(n):
  2.     sum0=0
  3.     for each in range(1,n+1):
  4.         sum0 = sum0**2+ each
  5.     return sum0
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-10 10:54:08 | 显示全部楼层
  1. '''
  2.     使用递归
  3.     规律为:
  4.              { 1                  (if n == 1) }
  5.     fun(n) = |                                |
  6.              { fun(n - 1) ^2 + n  (if n > 1)  }
  7. '''
  8. def fun(intarge):
  9.     if intarge > 0:
  10.         if 1 == intarge:
  11.             return 1
  12.         else:
  13.             return (fun(intarge - 1))**2 + intarge


  14. if __name__ == "__main__":
  15.     print("fun(1) = ", fun(1))
  16.     print("fun(2) = ", fun(2))
  17.     print("fun(3) = ", fun(3))
  18.     print("fun(4) = ", fun(4))
  19.     print("fun(5) = ", fun(5))
  20.    
复制代码


找规律,递归调用,注意递归结束的情况就行了

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-10 12:22:56 | 显示全部楼层
def fun(n):
        if n == 1:
                return 1
        else:
                return fun(n-1)**2 + n
n = int(input('请属于一个大于0的整数:'))
print(fun(n))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-10 19:36:35 | 显示全部楼层
  1. def fun(n):
  2.     if n==1:
  3.    
  4.         return 1
  5.    
  6.     return fun(n-1)**2+n
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-10 19:40:20 | 显示全部楼层
  1. def fun(n):
  2.     if n == 1:
  3.         return 1
  4.     else:
  5.         return fun(n-1)**2 + n

  6. n = int(input(''))
  7. print(fun(n))
复制代码

这样是返回上面所提到的表达式的总和,如果要返回表达式应该怎么写,求教

点评

前面有列出表达式的,可以参考  发表于 2018-3-11 21:40

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-10 20:48:12 | 显示全部楼层
  1. k = 0
  2. ans = 0
  3. def fun(n):
  4.     global k,ans
  5.     k+=1
  6.     ans = ans**2+k
  7.     if(n==k):
  8.         return ans
  9.     fun(n-k)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-10 21:04:46 | 显示全部楼层
大家的想法大多是迭代循环或递归,我的写法是和34楼 @graceasyi 一样,用reduce函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-10 21:40:15 | 显示全部楼层
def fun(n):
    if n == 1:
        return 1
    else:
        return fun(n-1)**2 + n
递归最容易实现了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-10 22:16:41 From FishC Mobile | 显示全部楼层
塔利班 发表于 2018-3-8 21:21
等着学习别人的简便写法



递归不可能快的,函数递归次数是成倍数增加的,你数字大点时间差距就出来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-11 21:03:03 | 显示全部楼层
冬雪雪冬 发表于 2018-3-10 21:04
大家的想法大多是迭代循环或递归,我的写法是和34楼 @graceasyi 一样,用reduce函数

reduce 跟迭代感觉是一个思路的,n稍微大一点,哪种都算不出来

版主我想问这个递推关系解不出来吗?
直接用递推关系的显式不是更快?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-11 21:45:02 | 显示全部楼层
solomonxian 发表于 2018-3-11 21:03
reduce 跟迭代感觉是一个思路的,n稍微大一点,哪种都算不出来

版主我想问这个递推关系解不出来吗?

reduce应该就是利用迭代循环的方式。由于数字增长的很快,递归和循环都会遇到麻烦。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-11 22:15:24 | 显示全部楼层
  1. def fun(n):
  2.     if n == 1:
  3.         return n
  4.     else:
  5.         return n + fun(n-1) ** 2
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-12 13:24:16 | 显示全部楼层
def fun(n):
                if n==1:
                        return(1)
                else:
                        return(fun(n-1)*fun(n-1)+n)
                pass
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-12 14:33:55 | 显示全部楼层

对对对,多谢楼主指出,傻了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-12 16:13:29 | 显示全部楼层
def fun(n):
    if n==1:
       print("结果是:1")
       return 1
    elif n==2:
        print("结果是:3")
        return 3
    else:
        f=[1,3]
        for n in range(n-2):
            f.append(f[-1]**2+(n+3))
        pfun=f[-1]
        print("结果是:",pfun)
x=int(input("请输入一个整数:"))
fun(x)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-12 16:29:23 | 显示全部楼层
num=int(input("请输入您想求的数:"))
result=0
for  i   in  range(1,num+1):
    result=(result)**2+i
    print(result)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-12 21:32:33 | 显示全部楼层
def a():
    x = int(input("请输入:"))
    #print(x)
    a = 0
    for i in range(1,x+1):
        a = a*a + i
    return(a)
    print(a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 09:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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