与えられた漸化式のn番目の項を見つけるCプログラム
3つの数値a、b、cと値nがあるとします。漸化式S(n)-
に従います。- S(1)はaを返します
- S(2)はbを返します
- S(3)はcを返します
- S(n)は、すべてのn> 3に対してS(n-1)+ S(n-2)+ S(n-3)を返します。
この再発に従って、n番目の用語を見つける必要があります。
したがって、入力がa =5、b =2、c =3、n =6の場合、-
であるため、出力は28になります。- S(6)=S(5)+ S(4)+ S(3)
- S(5)=S(4)+ S(3)+ S(2)
- S(4)=S(3)+ S(2)+ S(1)=3 + 2 + 5 =10
- これでS(5)=10 + 3 + 2 =15
- およびS(6)=15 + 10 + 3 =28
これを解決するには、次の手順に従います-
関数solve()を定義します。これには、a、b、c、n、
が必要です。- nが1と同じ場合、次のようになります。
- 返品
- nが2と同じ場合、次のようになります。
- return b
- nが3と同じ場合、次のようになります。
- return c
- returnsolve((a、b、c、n-1)+solve(a、b、c、n-2)+solve(a、b、c、n-3))
例
理解を深めるために、次の実装を見てみましょう-
#include <stdio.h> int solve(int a, int b, int c, int n){ if(n == 1) return a; if(n == 2) return b; if(n == 3) return c; return solve(a, b, c, n-1) + solve(a, b, c, n-2) + solve(a, b, c, n-3); } int main(){ int a = 5, b = 2, c = 3, n = 6; int res = solve(a, b, c, n); printf("%d", res); }
入力
5, 2, 3, 6
出力
28
-
Pythonでn番目のフィボナッチ用語を見つけるプログラム
数nがあるとします。再帰関数を定義して、n番目のフィボナッチ項を見つける必要があります。 したがって、入力がn =8の場合、最初のいくつかのフィボナッチ項は0、1、1、2、3、5、8、13、21、34 ... であるため、出力は13になります。 これを解決するには、次の手順に従います- 関数solve()を定義します。これにはnがかかります n <=2の場合、 return n-1 それ以外の場合、 returnsolve(n-1)+solve(n-2) 例 理解を深めるために、次の実装を見てみましょう- def solve(n): if n
-
Pythonで特定の漸化式のn番目の項を検索します
bnと呼ばれる数列があるとすると、これはb1=1やbn+1 / bn=2nのような漸化式を使用して表されます。与えられたnのlog2(bn)の値を見つける必要があります。 したがって、入力が6の場合、出力はlog2(bn)=(n *(n-1))/ 2 =(6 *(6-1))/ 2 =15として5になります。 この関係を次のように解くことで、この問題を解くことができます- b n + 1 / b n =2 n b n / b n-1 =2 n-1 … b 2 / b 1 =2 1 、上記のすべてを掛けると、次のようになります (b n +