C++程式查詢第N個非斐波那契數


在這個問題中,我們給定一個整數N。我們的任務是使用C++程式查詢第N個非斐波那契數

斐波那契數列 透過將前兩個數字相加生成後續數字。斐波那契數列從兩個數字開始 - F0 & F1。F0 & F1 的初始值可以分別取 0, 1 或 1, 1。

讓我們舉一個例子來理解這個問題,

輸入

N = 5

輸出

10

解決方案方法

解決該問題的一個簡單方法是找到斐波那契數,然後列印不在斐波那契數中的前n個數字。

另一種解決方案是使用斐波那契數公式,然後連續新增兩個斐波那契數之間的間隔。最後,所有間隔的總和將得出所需的輸出。在這裡,我們將使用明智的想法來破解。

演算法

  • 建立三個變數,它們將跟蹤當前元素、前一個元素和前一個元素。

  • 當非斐波那契數的計數為非負時,使用斐波那契數的簡單公式 - Fib(n)=Fib(n-1)+Fib(n-2)。

  • 使用公式n=n+(curr-prev-1)獲取非斐波那契數的計數。


  • 現在,要獲得第n個非斐波那契數,請從n中減去前一個數字。

示例

程式說明我們解決方案的工作原理

#include<iostream>
using namespace std;
int findNthNonFiboNumber(int n){
   int lastLastVal = 1, lastVal = 2, currVal = 3;
   while (n > 0){
      lastLastVal = lastVal;
      lastVal = currVal;
      currVal = lastLastVal + lastVal;
      n = n - (currVal - lastVal - 1);
   }
   n = n + (currVal - lastVal - 1);
   return (lastVal + n);
}
int main(){
   int n = 7;
   cout<<"Nth non fibonacci number is "<<findNthNonFiboNumber(n);
   return 0;
}

輸出

Nth non fibonacci number is 12

更新於: 2022年2月14日

731 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.