C 程式中的所有函式可以透過遞迴方式呼叫,即函式可以呼叫本身。 遞迴呼叫的數目受限於堆疊的大小。 /STACK
如需設定堆疊大小的連結器選項相關信息,請參閱 [堆棧配置] 鏈接器選項。 每次呼叫函式時,都會為參數和和 auto
register
變數配置新的記憶體,以免覆寫先前未完成呼叫中的值。 只有在建立參數的函數執行個體中才能直接存取這些參數。 之前的參數無法直接存取,以確保函式的執行個體。
請注意,使用 static
記憶體宣告的變數不需要每個遞歸呼叫的新記憶體。 其儲存空間會與程式的存留期同時存在。 對這類變數的每個參考都會存取相同的儲存區域。
範例
下列範例示範遞迴呼叫:
int factorial( int num ); /* Function prototype */
int main()
{
int result, number;
.
.
.
result = factorial( number );
}
int factorial( int num ) /* Function definition */
{
.
.
.
if ( ( num > 0 ) || ( num <= 10 ) )
return( num * factorial( num - 1 ) );
}