ホームページ >バックエンド開発 >C++ >C++ 関数の再帰的実装: 再帰の一般的な用途は何ですか?

C++ 関数の再帰的実装: 再帰の一般的な用途は何ですか?

WBOY
WBOYオリジナル
2024-04-22 16:36:011118ブラウズ

再帰は、関数がそれ自体を呼び出す手法であり、問​​題を段階的に解決するシナリオで広く使用されています。 C では、再帰には次のような一般的な用途があります。 フィボナッチ数を解く 階乗の計算 順列と組み合わせの計算 ツリー構造の横断 迷路解決問題の解決

C++ 函数的递归实现:递归的常见用法有哪些?

C 関数の再帰実装: 一般的な用途を調べるプログラミングにおける再帰の概要

再帰は、関数がそれ自体を呼び出すことを可能にするコンピューター サイエンスの手法です。これは、段階的な問題解決が必要なシナリオで広く使用されています。この記事では、C での再帰の一般的な使用法を調査し、実際の例を通して説明します。

基本的な使用法: フィボナッチ数列

最も単純な再帰的使用法は、フィボナッチ数列を見つけることです。このシーケンスの各数値は、前の 2 つの数値の合計です。具体的な実装は次のとおりです。

int fibonacci(int n) {
  if (n <= 1) {
    return 1;
  } else {
    return fibonacci(n - 1) + fibonacci(n - 2);
  }
}

階乗計算

数値の階乗を求めることも、古典的な再帰アプリケーションです。階乗は、その数値にそれ以下のすべての正の整数を乗算した結果です。

int factorial(int n) {
  if (n == 0) {
    return 1;
  } else {
    return n * factorial(n - 1);
  }
}

順列と組み合わせ

再帰を使用して、順列と組み合わせを計算することもできます。配置はオブジェクトを特定の順序で配置する方法であり、組み合わせは順序に関係なくオブジェクトを配置する方法です。

配置:

int permutations(int n, int r) {
  if (r == 0) {
    return 1;
  } else {
    return n * permutations(n - 1, r - 1);
  }
}

組み合わせ:

int combinations(int n, int r) {
  if (r == 0 || n == r) {
    return 1;
  } else {
    return combinations(n - 1, r - 1) + combinations(n - 1, r);
  }
}

ツリー構造の走査

再帰が広く使用されていますツリーやグラフなどのツリー構造をトラバースする場合。

二分木の事前順序走査:

void preorderTraversal(TreeNode* root) {
  if (root != nullptr) {
    std::cout << root->val;
    preorderTraversal(root->left);
    preorderTraversal(root->right);
  }
}

実際のケース: 迷路解決

再帰を使用すると、迷路解決の問題を解決できます。再帰的アルゴリズムは、出口へのパスが見つかるまで、考えられるすべてのパスを試行することによって機能します。

rree

以上がC++ 関数の再帰的実装: 再帰の一般的な用途は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。