斐波列契数列

Description

斐波列契数列(Faibonacci)0,1,1,2,3,5,8,13,21,34.....求此数列第n项。

即: Fibonacci数列是这样定义的:
F[0]=0;
F[1]=1;
F[n]=F[n-1]+F[n-2], for n>1.
Fibonacci数列的增长速度是惊人的。当n=47时,F[47]=2971215073(>2^31)。由于数列的值增长太快,对于n,你只需要输出F[n]%2147483647

Input

样例输入一:
0
样例输入二:

1

Output

样例输出一:

0
样例输出二:

1

HINT

0<=n<=100000000

python解法

# 从用户处获取输入,并转换为整数
n = int(input(""))

# 如果n为0,斐波那契数列的第0项为0
if n == 0:
    print(0)
# 如果n为1,斐波那契数列的第1项为1
elif n == 1:
    print(1)
else:
    # 初始化斐波那契数列的前两项
    numfn1 = 0  # 前一个数
    numfn2 = 1  # 当前数

    # 从第2项开始循环到第n项
    for i in range(2, n + 1):
        # 计算当前斐波那契数(前两个数之和)
        currentNum = numfn1 + numfn2

        # 更新前两个数,为下一次循环做准备
        numfn1 = numfn2
        numfn2 = currentNum

    # 输出斐波那契数列的第n项
    print(currentNum)

c++解法

#include<bits/stdc++.h> // 这是一个包含大部分标准库的头文件
using namespace std;

int main() {
    long long n; // 定义一个长整型变量n,用于存储输入的数
    cin >> n; // 从标准输入读取一个长整型数

    // 处理特殊情况:当n为0或1时,直接输出结果
    if (n == 0) {
        cout << 0 << endl; // 当n为0时,斐波那契数列的第0项为0
    }
    else if (n == 1) {
        cout << 1 << endl; // 当n为1时,斐波那契数列的第1项为1
    }
    else {
        // 初始化斐波那契数列的前两项
        long long numfn1 = 0; // numfn1用于存储前一项,初始化为0
        long long numfn2 = 1; // numfn2用于存储当前项,初始化为1

        // 从第2项开始计算斐波那契数列,直到第n项
        for (int i = 2; i <= n; i++) {
            // 计算当前项的值,即前两项之和
            long long currentNum = numfn1 + numfn2;

            // 更新前一项和当前项的值
            numfn1 = numfn2; // 前一项变为当前项
            numfn2 = currentNum; // 当前项变为新计算出的值
        }

        // 输出斐波那契数列的第n项
        cout << numfn2 << endl;
    }
    return 0; // 程序正常结束,返回0
}
如果您有更优的解法,欢迎在评论区一起交流噢~
阅读剩余
THE END