Saturday, September 1, 2018

C - 再帰

再帰は、自己似たような方法で項目を繰り返すプロセスです。 プログラミング言語では、ある関数が同じ関数の中で関数を呼び出せるようにすると、その関数の再帰呼び出しと呼ばれます。
void recursion() {
   recursion(); /* function calls itself */
}

int main() {
   recursion();
}

Cプログラミング言語は、再帰、すなわちそれ自身を呼び出す関数をサポートする。 しかし、再帰を使用している間、プログラマーは関数から終了条件を定義するのに注意する必要があります。そうでなければ、無限ループに入ります。

再帰関数は、数値の階乗の計算、フィボナッチ系列の生成など、多くの数学的問題を解くのに非常に便利です。


数学
次の例では、再帰関数を使用して、与えられた数値の階乗を計算します

#include <stdio.h>

unsigned long long int factorial(unsigned int i) {

   if(i <= 1) {
      return 1;
   }
   return i * factorial(i - 1);
}

int  main() {
   int i = 12;
   printf("Factorial of %d is %d\n", i, factorial(i));
   return 0;
}
上記のコードをコンパイルして実行すると、次の結果が生成されます

Factorial of 12 is 479001600


フィボナッチシリーズ
次の例では、再帰関数を使用して与えられた数のフィボナッチ系列を生成します

#include <stdio.h>

int fibonacci(int i) {

   if(i == 0) {
      return 0;
   }
 
   if(i == 1) {
      return 1;
   }
   return fibonacci(i-1) + fibonacci(i-2);
}

int  main() {

   int i;
 
   for (i = 0; i < 10; i++) {
      printf("%d\t\n", fibonacci(i));
   }
 
   return 0;
}

上記のコードをコンパイルして実行すると、次の結果が生成されます

0 
1 
1 
2 
3 
5 
8 
13 
21 
34





No comments:

Post a Comment

Interfaces and their protocol stacks

インタフェースとそのプロトコルスタック 主要なネットワーク要素に精通した後、これら要素間のインタフェースをよりよく知る時期が来ています。 インタフェースは、MME、SGWおよびPGWが他のネットワーク要素(例えば、HSSまたはPCRF)と協働することを可能にする。 それらの...