1. 程式人生 > >不使用迭代法的斐波那契數列(兔子生兔子問題)解決同時輸出兩個數字的問題

不使用迭代法的斐波那契數列(兔子生兔子問題)解決同時輸出兩個數字的問題

問題:

有一對兔子,生長三個月後。開始生第一對兔子,並且以後每月生一對兔子,小兔子生長三個月後,也開始生兔子,問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個,最後分解質因數也不難暴力出奇跡。對於代碼的實