這是一個具有遞歸循環的代碼。我得到的輸出爲199,但標記爲--A的printf語句未執行。請告訴我爲什麼??爲什麼fun(int i)中的printf語句沒有執行?
#include <stdio.h>
int fun(int); // function defined
int main()
{
printf(" %d ", fun(200)); // function called
return 0;
}
int fun(int i) // entire body of the function
{
static int d = 0;
d++;
if (i % 2)
return (i++);
else
return fun(fun(i - 1));
printf("%d ", d);// ------A
} // function fun(int) ends here.
您希望在哪些條件下執行? – juanchopanza
請格式化您的代碼。 –
它怎麼可能被執行?沒有路徑。這就是所謂的「不可達代碼」。如果'i%2'不爲零,則返回'i ++'。否則,它將返回嵌套的遞歸調用結果。無論哪種情況都會返回。 –