使用C++查詢佩爾數
在給定問題中,我們得到一個整數n,我們需要找到Pn,即該位置的佩爾數。眾所周知,佩爾數是一個由以下公式給出的序列的一部分:−Pn = 2*Pn-1 + Pn-2
前兩個起始數字為:− P0 = 0 和 P1 = 1
求解方法
現在我們將透過兩種方法解決這個問題:遞迴和迭代。
遞迴方法
在這個公式中,我們將遞迴地應用佩爾數的公式並進行n次迭代。
示例
#include <iostream>
using namespace std;
int pell(int n) {
if(n <= 2)
return n;
return 2*pell(n-1) + pell(n-2);
}
int main() {
int n = 6; // given n
cout << pell(n) <<"\n"; // Pell number at that position.
return 0;
}輸出
70
以上程式碼的解釋
在這種方法中,我們透過呼叫pell(n-1) && pell(n-2) 來使用遞迴,直到n小於或等於2,因為我們知道直到2的佩爾數與給定數字相同。上述程式的總體時間複雜度為**O(N)**,其中N是給定數字。
迭代方法
在這種方法中,我們將使用與上述相同的公式,但使用for迴圈而不是遞迴函式來計算數字。
示例
#include <iostream>
using namespace std;
int main() {
int n = 6; // given n.
int p0 = 0; // initial value of pn-2.
int p1 = 1; // initial value of pn-1.
int pn; // our answer.
if(n <= 2) // if n <= 2 we print n.
cout << n <<"\n";
else {
for(int i = 2; i <= n; i++) { // we are going to find from the second number till n.
pn = 2*p1 + p0;
p0 = p1; // pn-1 becomes pn-2 for new i.
p1 = pn; // pn becomes pn-1 for new i.
}
cout << pn << "\n";
}
return 0;
}輸出
70
以上程式碼的解釋
在給定的程式中,我們從2遍歷到n,並簡單地更新pn-2到pn-1和pn-1到pn的值,直到我們到達n。
結論
在本文中,我們使用遞迴和迭代解決了查詢第N個佩爾數的問題。我們還學習了這個問題的C++程式以及我們解決這個問題的完整方法(常規和高效)。我們可以在其他語言(例如C、Java、Python和其他語言)中編寫相同的程式。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP