こんにちは、Visual C++ で C コードを実装し、デバッグ用にいくつかの変更を加えました。ここにコードがあります
long long unsigned factorial(long long unsigned int * n) {
if (*n<=1) return 1;
else {
(*n)--;//This statement here .......
printf("calculating %d * factorial %d \n",*n,*n); -- used for debugging
return ((*n+1) * factorial(n));
}
}
最終的な出力 (factorial の値) は期待どおりですが、驚くべきは debug ステートメントの出力です。
calculating 4 * factorial 0
calculating 3 * factorial 0
calculating 2 * factorial 0
calculating 1 * factorial 0
120
すべてのデバッグ ステートメントで同じ値 *n が 2 回使用され、異なる値が表示されます。ステートメントで同じ値を 2 回使用すると、どのようにして異なる結果が得られるのでしょうか。