这个题目需要注意,不适用递归,使用循环写代码。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;
}