Main Content

再帰関数のコード生成

再帰 MATLAB® 関数のコードを生成するために、コード ジェネレーターはコンパイル時の再帰または実行時の再帰を使用します。MATLAB コードを修正して、コード ジェネレーターでコンパイル時または実行時の再帰を使用するかどうかを制御できます。コード ジェネレーターで実行時の再帰を強制的に使用させるを参照してください。

コンフィギュレーション パラメーターを修正して、再帰が許可されないようにするか、実行時の再帰を無効にすることができます。

コード生成用に MATLAB コードで再帰関数を使用する場合は、特定の制限事項に従わなければなりません。コード生成における再帰関数の制限事項を参照してください。

コンパイル時の再帰

コンパイル時の再帰では、コード ジェネレーターによって生成されたコードに複数のバージョンの再帰関数が作成されます。各バージョンへの入力の値とサイズは、そのバージョンに合わせてカスタマイズされます。これらのバージョンは、"関数の特殊化" として知られています。コード生成レポートを見ると、コード ジェネレーターがコンパイル時の再帰を使用したかどうかを確認できます。レポート内のコンパイル時の再帰の例は次のとおりです。

This image shows the results of compile-time recursion in the MATLAB Function report

実行時の再帰

実行時の再帰では、コード ジェネレーターによって生成されたコードに再帰関数が生成されます。コード生成レポートを見ると、コード ジェネレーターが実行時の再帰を使用したかどうかを確認できますレポート内の実行時の再帰の例は次のとおりです。

This image shows an example of a run-time recursion in the report

再帰を許可しない

コード高速化のための構成オブジェクトで、CompileTimeRecursionLimit コンフィギュレーション パラメーターの値を 0 に設定します。

実行時の再帰を無効にする

MISRA™ などの一部のコーディング標準では、再帰は許可されません。MISRA C™ に準拠したコードを生成する可能性を高めるには、実行時の再帰を無効にします。

コード高速化のための構成オブジェクトで、EnableRuntimeRecursionfalse に設定します。

実行時の再帰が必要なコードで実行時の再帰が無効にされた場合、コンパイル時の再帰を使用するか、再帰を使用しないようにコードを書き換えなければなりません。

コード生成における再帰関数の制限事項

コード生成用に MATLAB コードで再帰を使用する場合は、次の制限事項に従ってください。

  • 関数内で最初の再帰呼び出しの前に、ランタイム再帰関数のすべての出力を代入する。

  • ランタイム再帰関数の cell 配列出力のすべての要素を代入する。

  • ランタイム再帰関数の入力と出力をクラスにすることはできない。

  • 実行時の再帰では、StackUsageMax コード高速化コンフィギュレーション パラメーターは無視される。

関連するトピック