2 回答

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個贊
開頭的bool IsOdd(int );是函數(shù)的聲明,也就是告訴編譯器說有個函數(shù)叫IsOdd,其參數(shù)是int,返回值是bool。這樣編譯器如果在該函數(shù)的定義之前看到類如IsOdd(n-1)的語句時就知道這是一個函數(shù)調(diào)用,等編譯了IsOdd函數(shù)的定義后再將其函數(shù)地址補(bǔ)回到調(diào)用處。
如果去掉則編譯器在第一次碰到IsOdd(n-1)時就不知道這是什么鬼,所以就報錯了。
不想額外加這一行的辦法是把bool IsOdd(int)的實(shí)現(xiàn)---也就是定義了,放到調(diào)用函數(shù)之前,在你的代碼中就是把main前面的IsOdd整體挪到前面------------囧了個囧, 您這是互相調(diào)用??? 那沒轍了,只能這么寫了。 非互相調(diào)用的,比如a調(diào)用b,但b不調(diào)用a的話,可以先定義b,然后定義a,則無需在a前面再增加函數(shù)聲明; 但如果先定義a則需要在a前面增加b的函數(shù)聲明。

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個贊
這是函數(shù)的聲明,告訴編譯器這是個函數(shù),定義在其他地方。
因此在IsEven函數(shù)體里可以調(diào)用IsOdd函數(shù)。
如果不寫的話,編譯器不知道IsOdd是什么,因?yàn)镮sOdd寫在IsEven后面,編譯器還沒有對IsOdd進(jìn)行編譯。
添加回答
舉報