斐波那契数列

又没有做出来,知道怎么想的,但是想了半天 思想思路太少了

 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  没有多大的差别

 

posted @ 2017-12-20 11:06  小陈同学啦  阅读(238)  评论(0编辑  收藏  举报