面试题10:斐波那契数列

这个题目需要注意,不适用递归,使用循环写代码。Java真的比C慢太多。。。

Java版本

package zr.test;

/**
 * @author ZR
 * @Classname Num_10
 * @Description TODO
 * @Date 2020/7/15 16:42
 */
public class Num_10 {

    public static void main(String[] argv) {
        System.out.println(".");
    }

    public int Fibonacci(int n) {
        int[] result = {0, 1};
        if (n < 2) {
            return result[n];
        }
        int fibNMinusOne = 0;
        int fibNMinusTwo = 1;
        int fibN = 0;
        for (int i = 2; i <= n; i++) {
            fibN = fibNMinusOne + fibNMinusTwo;
            // fibNMinusOne = 上一次运算的值
            fibNMinusOne = fibNMinusTwo;
            // fibNMinusTwo = 这一次运算的值
            fibNMinusTwo = fibN;
        }
        return fibN;
    }
}

C++版本

#include <iostream>
using namespace std;

int Fibonacci(int n){
    int result[2] = {0,1};
    if(n < 2)
        return result[n];
    int fibNMinusOne = 0;
    int fibNMinusTwo = 1;
    int fibN = 0;
    for(int i = 2; i <= n; i++){
        fibN = fibNMinusOne + fibNMinusTwo;
        fibNMinusOne = fibNMinusTwo;
        fibNMinusTwo = fibN;
    }
    return fibN;
}

int main(){
    int a[5] = {1,2,3,4,5};
    cout<<&a[2]<<" "<<&a[3]<<endl;
    cout<<Fibonacci(6)<<endl;
    return 0;
}

posted @ 2020-07-15 17:10  程序员曾奈斯  阅读(135)  评论(0)    收藏  举报