又没有做出来,知道怎么想的,但是想了半天 思想思路太少了
1 class Solution { 2 public: 3 int Fibonacci(int n) { 4 if( n > 39) 5 return -1; 6 if(n == 1){ 7 return 1; 8 } 9 else if ( n ==0 ) 10 return 0; 11 else{ 12 int a = 0, b =1; 13 int m = 0; 14 for (int i = 1 ;i < n ;i++){ 15 m =a+b; 16 a = b; 17 b = m; 18 } 19 return m ; 20 } 21 22 } 23 };
看了答案 想了很久才出来这么个答案,唉 加油!!
答案就很给力了 动态规划(什么鬼? 没听说过呀)
1 class Solution { 2 public: 3 int Fibonacci(int n) { 4 int f = 0, g = 1; 5 while(n--) { 6 g += f; 7 f = g - f; 8 } 9 return f; 10 } 11 };
还有一个低配版的::(这个想到了,可惜啊 当时没想透)
1 if(n<=1){ 2 return n; 3 } 4 int[] record = new int[n+1]; 5 record[0] = 0; 6 record[1] = 1; 7 for(int i=2;i<=n;i++){ 8 record[i] = record[i-1] + record[i-2]; 9 } 10 return record[n];
这此知识点:(1)动态分配数组内存的方法 :
int[] record = new int[n+1];
(2)动态规划概念 可惜还是不太懂。
(3) 可以通过循环赋值来达到叠加的效果
python的解答方法:
1 # -*- coding:utf-8 -*- 2 class Solution: 3 def Fibonacci(self, n): 4 # write code here 5 if n==0 : 6 return 0 7 if n ==1: 8 return 1 9 a= 0 10 b=1 11 12 for i in range(1,n) : 13 m1 = a+b 14 a = b 15 b = m1 16 return m1
和c 没有多大的差别