階段を登る - 再帰的分析
あなたが階段を登っているとします。建物の屋上に到達するまでに n 歩かかります。一度に1段か2段ずつ登ることができます。建物の屋上に行くには、何通りの方法がありますか? 注: 指定された n は正の整数です。
例 1:
入力: 1
出力: 1
説明: 建物の屋上に到達する方法があります。
方法 1: 1 段階
例 2:
入力: 2
出力: 2
説明: 建物の屋上に行くには 2 つの方法があります。
方法 1: 1 ステップ + 1 ステップ
方法 2: 2 ステップ
逆方向に分析を続けると、次の結果が得られます。
入力: 3
出力: 3
説明: 建物の頂上に登るには 3 つの方法があります。
方法 1: Tier 1 + Tier 1 + Tier 1
方法 2: Tier 1 + Tier 2
方法 3: Tier 2 + Tier 1
入力: 4
出力: 5
説明: 建物の頂上に登るには 5 つの方法があります。
方法 1: ステップ 1 + ステップ 1 + ステップ 1
+ ステップ 1 方法 2: ステップ 1 + ステップ 1 + ステップ 2
方法 3: ステップ 1 + ステップ 2 + ステップ 1 方法 4
: ステップ 2 + ステップ 1 + ステップ 1
方法 5: 2段目+2段目
入力: 5
出力: 8
説明: 建物の頂上に登るには 5 つの方法があります。
方法 1: ステップ 1 + ステップ 1 + ステップ 1 + ステップ 1 + ステップ 1
方法 2: ステップ 1 + ステップ 1 + ステップ 1 + ステップ 2 方法 3
: ステップ 1 + ステップ 1 + ステップ 2 + ステップ 1
方法 4: ステップ 1 + 2 ステップ + 1 ステップ + 1 ステップ
方法 5: 1 ステップ + 2 ステップ + 2 ステップ
方法 6: 2 ステップ + 1 ステップ + 1 ステップ + 1 ステップ
方法 7: 2 ステップ + 1 ステップ + 2 ステップ
方法 8: 2 ステップ+ 2段階目 + 1段階目
上記を要約すると、次のようになります。
階段が 1 つの場合、道は 1 つあり、 f(1) = 1 で表されます。
階段が 2 つの場合、道は 2 つあり、次のように表されます。 f(2) = 2
階段が 3 つの場合、道は 3 つありますf(3) = f(2) + f(1) = 3 と表されます。
4 つの階段がある場合、5 通りあります。 f(4) = f(3) + f(2) = 5 と表されます。
階段が 5 階ある場合、次の 8 つの方法があります。 f(5) = f(4) + f(3) = 8 ... (など) 階段が n 階ある場合、次のようになり
ます
。 f(n) メソッド、次のように表されます。 f(n) = f(n-1) + f(n-2) = ?
Python コードは次のとおりです。
def digui(n):
if n == 1:
return 1
if n == 2:
return 2
return digui(n - 1) + digui(n - 2)
print(digui(5))
操作結果:
8
フローチャート思考分析: