首页 > 编程语言 >算法题:求解斐波那契数列

算法题:求解斐波那契数列

时间:2023-06-12 15:14:50浏览次数:38  
标签:数列 sum 兔子 斐波 k2 那契

概念:

斐波那契数列是指以0, 1开始,之后每一项都等于前两项之和的数列,

即:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144……以此类推。

这个数列最早是由13世纪意大利数学家斐波那契提出的,并在数学、自然科学和计算机科学等领域有着广泛的应用。

题目:

若有一只兔子,它每个月生一只小兔子,而小兔子一个月后也开始生产。

起初只有一只兔子,一个月后就有两只兔子,二个月后就有三只兔子,三个月就有五只兔子

以此类推,12个月后有多少只兔子。

分析:

设月为y,上个月数量为k1,上上个月数量为k2,总数为sum

sum = k1 + k2

代码:

$sum = 0; // 总数
$y = 12; // 月份数
$k1 = 1; // 上个月数量
$k2 = 0; // 上上个月数量

// $i从2开始 因为第一个月有一个兔子 也就是上个月有一个兔子
for($i=2;$i<=$y;$i++){
    $sum = $k1 + $k2; // 当月数量
    $k2 = $k1; // 上个月给上上给月
    $k1 = $sum; // 当月数量给上个月
}

echo "12月后数量:".$sum."\n";

结果:

12月后数量:144

 

标签:数列,sum,兔子,斐波,k2,那契
From: https://www.cnblogs.com/wordblog/p/17474972.html

相关文章

  • P1306 斐波那契公约数 题解
    请求出\(f_n\)与\(f_m\)的最大公约数,即\(\gcd(f_n,f_m)\),答案对\(10^8\)取模。结论:\(\gcd(f_n,f_m)=f_{\gcd(n,m)}\)证明如下:首先引理1:\[f_{n+m}=f_{n-1}\timesf_{m}+f_{n}\timesf_{m+1}\]运用归纳法,可以简单证明,此处略去。引理2:\[\gcd(f_n,f_......
  • 等差数列
    题目:/***等差数列:*求等差数列前N项的级数之和。不考虑不合理的输入等特殊情况*输入N,首项M,差值K,整型,空格分隔。*/解答:classTest93{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);//codehere......
  • Luogu P1939 【模板】矩阵加速(数列)
    【模板】矩阵加速(数列)题目描述已知一个数列\(a\),它满足:\[a_x=\begin{cases}1&x\in\{1,2,3\}\\a_{x-1}+a_{x-3}&x\geq4\end{cases}\]求\(a\)数列的第\(n\)项对\(10^9+7\)取余的值。输入格式第一行一个整数\(T\),表示询问个数。以下\(T\)行,每行一个正......
  • 计算斐波那契数列的前 N 项
    它使用C++11中的多线程库thread来并行计算斐波那契数列的前N项:#include<iostream>#include<thread>#include<vector>voidfib(std::vector<int>&fib,intstart,intend){for(inti=start+2;i<end;i++){fib[i]=fib[i-1]+......
  • P5012 水の数列 题解
    水の数列题目大意对于给定的数列\(a\),选择一个数\(x\),定义其得分为数列中所有小于等于\(x\)的数形成的若干个连续区间的平方和除以\(x\)所得到的数。现进行多次询问,每次询问给定两个数\(l,r\),要求出一个得分最大的\(x\),满足数列中所有小于等于\(x\)的数形成的若干个......
  • 力扣-509. 斐波那契数 70. 爬楼梯
    参考:https://leetcode.cn/problems/climbing-stairs/solutions/286022/pa-lou-ti-by-leetcode-solution/更详细的动态规划题解:https://leetcode.cn/problems/fibonacci-number/solutions/8330/dong-tai-gui-hua-tao-lu-xiang-jie-by-labuladong/题目:斐波那契数(通常用F(n)表......
  • 算法刷题记录:素数中的等差数列
    题目链接https://ac.nowcoder.com/acm/contest/19859/I题目分析模拟!模拟!模拟!下标要计算好。自己的思路是放发现两个相等的差时,说明至少可以输出了,也就是合法情况,然后用指针R往后扩展。我选择的R是闭区间的,即[L,R]的区间已经看过了,所以i可以直接从i+1开始看。所以R赋值给i后......
  • 对话框变化大小后。CBCGPListCtrl、CListCtrl重新显示行数列数m_list_.Arrange(LVA_AL
    h文件中afx_msgvoidOnSize(UINTnType,intcx,intcy);voidResizeUI();vector<CRect>m_vec_rect_; BEGIN_MESSAGE_MAP(CDlgXXX,CBCGPDialog) ON_WM_SIZE() END_MESSAGE_MAP()BOOLCDlgXXX::OnInitDialog(){ CBCGPDialog::OnInitDialog(); EnableVisua......
  • 等差数列生成器
      1classArithmeticProgression:23def__init__(self,begin,step,end=None):4self.begin=begin5self.end=end6self.step=step789def__iter__(self):10result=typ......
  • 等比数列二分求和
    今天我们学习如何有效地求表达式的值。对于这个问题,用二分解决比较好。(1)当时,(2)当时,那么有    (3)当时,那么有   代码:#include<iostream>#include<string.h>#include<stdio.h>usingnamespacestd;constintM=1000000007;typedeflonglongLL;LLpower(LLa,LL......