|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
数列a1=1,an=an-1/(1+an-1 ^0.5),n和n-1是下标。(好像是个高考题,正好最近在学Python,就想着试试编程做一做)
我想计算每一项的值以及求和,那我这个代码哪里出错了么,funa(30)和suma(30)就出不来结果,而且20往后出结果越来越慢。
- def funa(n):
- if n == 1:
- return 1
- else:
- return (funa(n-1) / (1+ funa(n-1)**0.5))
-
- def suma(n):
- sum = 0
- for i in range(1,n):
- sum = sum + funa(i)
- return sum
复制代码
给你加两行代码
另外注意,suma(30)是取不到 30 的,想取到 30 要记得 range(1,n+1)
- from functools import lru_cache
- @lru_cache()
- def funa(n):
- if n == 1:
- return 1
- else:
- return (funa(n-1) / (1+ funa(n-1)**0.5))
-
- def suma(n):
- sum = 0
- for i in range(1,n):
- sum = sum + funa(i)
- return sum
复制代码
|
|