不使用迭代法的斐波那契數列(兔子生兔子問題)解決同時輸出兩個數字的問題
問題:
有一對兔子,生長三個月後。開始生第一對兔子,並且以後每月生一對兔子,小兔子生長三個月後,也開始生兔子,問N個月後兔子的總數量?
通用解法:
使用迭代法,此方法網上有n多版本,再次不再贅述。
不使用迭代法:
在不適用迭代法,而僅僅用for迴圈時,會出現一個問題,就是會同時輸出兩對數字,而輸入奇數,比如輸入9時很明顯只想得到奇數個數字。
#include<stdio.h>
int main()
{int f1=1,f2=1,i;
int in=0;
printf("請輸入一個整數:\n");
scanf("%d",&in);
for(i=0;i<in;i++)
{
if(2*i>=in)break;
printf("%d\n",f1);
if(2*i+1>=in)break;
printf("%d\n",f2);
f1=f1+f2;
f2=f1+f2;
}
return 0;
}
在for迴圈中加入了兩個判斷,其一是2*i>=in,這個數字代表了程式執行到此步驟時的輸出數字個數。其二是2*i+1>=in,代表了程式執行到此步驟時的輸出數字個數。當輸出足夠個數字時即可終止迴圈。
相關推薦
不使用迭代法的斐波那契數列(兔子生兔子問題)解決同時輸出兩個數字的問題
問題: 有一對兔子,生長三個月後。開始生第一對兔子,並且以後每月生一對兔子,小兔子生長三個月後,也開始生兔子,問N個月後兔子的總數量? 通用解法: 使用迭代法,此方法網上有n多版本,再次不再贅述。 不使用迭代法: 在不適用迭代法,而僅僅用for迴圈時,會出現一個問題
php遞迴和迭代實現斐波那契數列
<?php //1 1 2 3 5 8 13 21 34 55 //迭代 function fib($n){ if($n<1) return -1; $a[1]=$a[2]=1;
[luoguP1962] 斐波那契數列(矩陣快速冪)
truct ons 技術 pan opera http 快速冪 printf ble 傳送門 解析詳見julao博客連接 http://worldframe.top/2017/05/10/清單-數學方法-——-矩陣/ —&
HDU 4549 M斐波那契數列(矩陣快速冪)
題目連結:M斐波那契數列 列舉幾項會發現$ F[n]=a^{fib(n-1)} * b^{fib(n)} $ 斐波那契數列用矩陣快速冪求即可。但是因為n很大,fib會爆掉。這時候可以引入費馬小定理。 證明:$a^x \% p = a^{x \%(p-1)} \%p$ 1.$a^x \% p = a^{
Luogu P1962 斐波那契數列(矩陣乘法模板)
傳送門(其實就是求斐波那契數列....) 累了 明天再解釋 #include<cstdio> #define ll long long using namespace std; const ll mod = 1000000007; struct matrix {
【矩陣快速冪】HDU 4549 : M斐波那契數列(矩陣巢狀)
【題目大意】 M斐波那契數列F[n]是一種整數數列,它的定義如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) 現在給出a,
資料結構10——k階斐波那契數列(嚴3.32)
Description試利用迴圈佇列編寫k階斐波那契數列中前n+1項 (f(0),f(1),…,f(n))的程式,要求滿足: f(n)<=max而f(n+1)>max,其中max為某個約定的
斐波那契數列(遞迴與迭代)
int Fbi(int i)/*這裡Fbi就是函式自己,等於在呼叫自己*/ { if(i<2) return i==0?0:1; return Fbi(i-1)+Fbi(i-2); } int main() { int i; int a[40]; printf("迭代顯示斐波那契數列:\
java中的不死兔問題(斐波那契數列)(遞歸思想)
sys nbsp public 錯誤 兔子 static class 月份 urn 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少? public class Item { pu
斐波那契數列(遞歸、非遞歸算法)
opened 下午 之前 imp spl alt string TE pan 題目 斐波那契數,亦稱之為斐波那契數列(意大利語: Successione di Fibonacci),又稱黃金分割數列、費波那西數列、費波拿契數、費氏數列,指的是這樣一個數列:1、1、2、3、5
矩陣快速冪法+斐波那契數列餘數
#include<stdio.h> struct mar { long long a[2][2]; }; mar mar_mul(mar x,mar y); int Fmod(long long n); int main() { int t,
用面向物件的思想解決不死神兔問題(斐波那契數列)
/** * 有一對兔子,從出生後第3個月起每個月都生一對兔子, * 小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少? * * 規律分析: 1,1,2,3,5,8,13,21,34... */ 說起這個問題,可能第
Java利用BigInteger計算斐波那契數列(不死神兔)
package demo01; /* * 1.用迴圈實現不死神兔 故事得從西元1202年說起,話說有一位義大利青年,名叫斐波那契。 在他的一部著作中提出了一個有趣的問題:假設一對剛出生的小兔一個月後就能長成大兔, 再過一個月就能生下一對小兔,並且此後每個月都生一對小
斐波那契數列(不使用遞迴的快速演算法)
void fabnacii(int n, int& fn) {if (n == 1){fn = 1;}else if (n == 2){fn = 1;}else if (n > 2){int* Fabnacci = new int[n];Fabnacci[0
JavaScript算法系列之-----------------斐波那契數列(JS實現)
esc 算法 題目 要求 n-1 return 系列 斐波那契數列 通過 題目描述 大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0)。 n<=39 遞歸實現: function Fibonacci(
hdu 4549 M斐波那契數列(矩陣高速冪,高速冪降冪)
else if stdlib.h article 1.0 ostream void 我們 memset font http://acm.hdu.edu.cn/showproblem.php?pid=4549 f[0] = a^1*b^0%p,f[1] = a^0*b
[luoguP2626] 斐波那契數列(升級版)(模擬)
sub std [1] 斐波那契數 == cnblogs () ios git 傳送門 模擬 代碼 #include <cmath> #include <cstdio> #include <iostream>
用遞歸方法計算斐波那契數列(Recursion Fibonacci Python)
n-1 html pri style strong ans rdo 黃金分割 nac 先科普一下什麽叫斐波那契數列,以下內容摘自百度百科: 斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因意大利數學家列昂納多·斐波那契(Leonardoda Fib
斐波那契數列(大數加法)
斐波那契 ++ add ret div 加法 clas 註意 cin 題意: 求斐波那契的前10000項目 分析: 模擬豎式加法, 用string作為數字的儲存形式 #include<bits/stdc++.h> using namespace std; st
題解 P2626 【斐波那契數列(升級版)】
實現 ace 升級版 因數 退出 turn 思路 font return 題解 P2626 【斐波那契數列(升級版)】 這一道題目的解法多種多樣,但就對於題目本身而言拿暴力分應該不是太難,簡單地模擬一下斐波拉契的過程,求出第n個,最後分解質因數也不難暴力出奇跡。對於代碼的實