2019年-fibonacci数列与黄金分割

题目

法一、递归

def fib (n):
  if n==1 or n==2:
    return 1
  return fib(n-1)+fib(n-2)

n = int(input())
a=fib(n)
b=fib(n+1)
print("{:.8f}".format(a/b))
  • 只通过了60%的测试

法二、迭代

#动态规划
# def fib (n):
#   dp=[0]*(n+1)
#   dp[1],dp[1]=1,1
#   for i in range(3,n+1):
#     dp[i]=dp[i-1]+dp[i-2]
#   return dp[n]
#优化
def fib(n):
  if(n==1 or n==2):
    return 1
  pre,cur=1,1
  for i in range(3,n+1):
    sum=pre+cur
    pre=cur
    cur=sum
  return cur

n = int(input())
if n>20:
  print(0.61803399)
else:
  a=fib(n)
  b=fib(n+1)
  print("{:.8f}".format(a/b))
posted @   Frommoon  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示