カエルのジャンプステップの問題を再帰的に解決します(Fibonacciシーケンス)

トピック:カエルは一度に1つまたは2つのステップをジャンプできます。カエルがnレベルのステップでジャンプするためのジャンプ方法はいくつありますか?

アイデアへの
回答ステップが1つしかない場合、ジャンプ方法は1つだけです。
ステップが2つある場合、ジャンプ方法は2つあり、1つは2回ジャンプします。毎回1レベルジャンプし、もう1つは一度に2レベルジャンプします。
ステージ数が2より大きい場合は、nに設定します。このとき、nステップのジャンプ方法をnの関数と見なし、最初のジャンプとして記録します。 2つの異なるオプションがあります。1つは最初に1つのレベルにジャンプする方法で、ジャンプの数は残りのn-1ステップのジャンプの数と同じです。つまり、2つ目は最初に2つのレベルにジャンプする方法です。このとき、ジャンプ方法の数は残りのn-2ステップのジャンプ方法の数と等しく、nステップの異なるジャンプ方法の総数はであり、それがフィボナッチシーケンスの
数学関数であることがわかります。次のように

公式

#include<stdio.h>
int ways(int n)
{
	if (n<=1)
	{
		return 1;
	}
	else
	{
		return ways(n-2) + ways(n - 1);
	}
}
int main()
{
	int n;
	scanf("%d", &n);
	printf("%d\n", ways(n));
	return 0;
}

一度に1レベルスキップするように条件を変更すると、2レベルをスキップすることも、3レベルをスキップすることもできます... nレベルをスキップすることもできますか?

考え
それが初めての場合:段階の数がnである場合、我々は、F(N)として示さnの関数、、最初のジャンプのための異なる選択肢は、nがあるとしてステップnにジャンプ方法を考えます1レベルジャンプします。このときのジャンプ数は、残りのn-1ステップのジャンプ数と同じです。f(n-1)です。初めてm(m <n)にジャンプする場合は、ジャンプします。メソッドの数は、残りのnmステップのジャンプメソッドの数、つまりf(nm)に等しくなります。nステップを初めてジャンプする場合、ジャンプメソッドの数は1に等しくなります。したがって、
f(n)= f(n- 1)+ f(n-2)+…f(nm)+…+ f(2)+ f(1)+1
なので、f(n-1)= f(n-2)+…+ f(nm) +…f(2)+ f(1)+1
2つの式を差し引いてf(n)= 2 * f(n-1)を
取得すると、次の結果が得られます。jieguo

回答
一度に1レベルスキップできるように条件を変更すると、2レベルスキップすることもできます...またはnレベルにジャンプしてからjieguo

おすすめ

転載: blog.csdn.net/weixin_45796387/article/details/111213410