ホームページ  >  記事  >  バックエンド開発  >  C++ の再帰関数の終了条件は何ですか?

C++ の再帰関数の終了条件は何ですか?

PHPz
PHPzオリジナル
2024-04-17 11:33:01358ブラウズ

C 再帰関数の終了条件には次のものが含まれます。 ベースライン条件: 関数が結果を直接返すことができる状態に達したかどうかを確認し、通常は特定の条件またはパラメーター値がしきい値を満たすかどうかを判断します。再帰終了条件: ベースライン条件の代替または追加で、再帰の深さを追跡するか最大再帰の深さ制限を設定することによって、一定回数の再帰呼び出し後に関数が停止するようにします。

C++ 递归函数的退出条件是什么?

C 再帰関数の終了条件

再帰関数は、それ自体を繰り返し呼び出すことで問題を解決します。無限再帰ループに陥るのを防ぐには、明確な終了条件を定義する必要があります。 C では、終了条件は通常、次の方法で実装されます:

1. ベースライン条件:

  • は、関数がいつ到達するかを決定するために使用されます。結果の状態を直接返すことができます。
  • 通常は、特定の条件が満たされているか、パラメータ値が特定のしきい値に達しているかを確認します。
  • ベースライン条件が true の場合、関数は直接戻ります。
bool isEven(int n) {
  if (n == 0) {  // 基线条件:当 n 为 0 时,返回 true
    return true;
  } 
  else {
    return isEven(n - 1);  // 递归调用
  }
}

2. 再帰的終了条件:

  • ベースライン条件の代替または補足として。
  • は、一定回数の再帰呼び出し後に関数が停止するようにするために使用されます。
  • 再帰の深さを追跡するか、再帰の深さの最大制限を設定することによって達成されます。
int fibonacci(int n) {
  if (n <= 1) {  // 基线条件:当 n <= 1 时,返回 n
    return n;
  } 
  else if (n > MAX_RECURSION_DEPTH) {  // 递归终止条件:当递归深度超过限制时,返回错误值
    return -1;
  } 
  else {
    return fibonacci(n - 1) + fibonacci(n - 2);  // 递归调用
  }
}

実際的なケース

次の関数例は、指定された数値の階乗を計算します:

int factorial(int n) {
  if (n == 0) {  // 基线条件:当 n 为 0 时,返回 1
    return 1;
  } 
  else {
    return n * factorial(n - 1);  // 递归调用
  }
}

以上がC++ の再帰関数の終了条件は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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