面接の質問:カエルのジャンプとフィボナッチ数列

     当初の公開:

 

 

      今週末はプログラマーの日です。カエルジャンプとフィボナッチ数列について話しましょう。何年も前、T社のW部門にインタビューしていたときに、カエルのジャンプの問題に遭遇しました。

 

      質問は次のとおりです。

      n歩あり、カエルは一度に1〜2歩しかジャンプできません。n歩にジャンプする方法の数を見つけてください。

      (1)n> 1000の場合、それを解決するプログラムを作成します。

      (2)一般的な用語の式を見つけます。

 

 

      インタビューサイトでは、この問題を解決するのはまだ難しいと言わざるを得ません。カエルがnステップまでジャンプする方法の数をf(n)とすると、次のようになります。

f(1)= 1

f(2)= 2

f(n + 2)= f(n + 1)+ f(n)

       

      これは古典的なフィボナッチ数列であり、再帰によって直接解決できます。

func fib(n int) int {
    if n <= 0 {
        // 异常处理
    }

    if n == 1 || n == 2 {
        return n
    }

    return fib(n - 1) + fib(n - 2)
}

 

      ただし、n> 1000の場合、f(n)は非常に大きな値であり、明らかに上記の方法は使用できません。多数を処理するには、前の記事「書面によるインタビューの質問:1000の階乗の質問」を参照してください

 

 

      では、一般的な用語の式を見つける方法は?標数ルート法、行列法、母関数法、Z変換法など多くの方法があります。

      これが高校生が理解できる方法、つまり一連の数字を構成する方法です。

 

       フィボナッチ数列の適用は非常に広範囲です。プラットフォームからのカエルのジャンプ、ウサギの繁殖、床タイルなどの問題はすべて、典型的なフィボナッチ数列の問題です。

 

       素敵な週末と幸せなプログラマーの日をお過ごしください。皆さんのお気に入りのオファーをお届けします。

 

 

おすすめ

転載: blog.csdn.net/stpeace/article/details/110419390