新聞中心
我們在使用C語言編寫程序,特別是使用函數(shù)遞歸時經(jīng)常會遇到編譯器報錯“用于調(diào)用的參數(shù)太少”,如圖:
那么遇到這種情況我們該如何解決呢?
首先以下面一段代碼為例向大家解釋問題到底出在哪里:
#define _CRT_SECURE_NO_WARNINGS 1
#includeint power(int x,int y)
{
if (y>1)
{
return x * power(y-1);
}
else
{
return x;
}
}
int main()
{
int n = 0;
int k = 0;
scanf("%d %d", &n,&k);
printf("%d",power(n, k));
return 0;
}
如圖,這是一段使用函數(shù)遞歸的方式求解n的k次方的程序代碼。看似沒有什么問題,但如果你原封不動的將該段代碼放在編譯器運行時卻會導(dǎo)致編譯器報錯,如圖:
然而問題就出在第 7行代碼:
return x * power(y-1);
注意,power函數(shù)在定義時是創(chuàng)建了兩個形式參數(shù)的,即x和y:
int power(int x,int y)
那么在后續(xù)調(diào)用power函數(shù)時就需要傳給它兩個參數(shù)才行,而第七行代碼明顯只傳給了power函數(shù)一個參數(shù),因此會導(dǎo)致編譯器報錯“用于調(diào)用的參數(shù)太少”。
在搞清楚了編譯器為何會報錯之后,我們的解決方法也非常簡單,即,將原代碼改為:
return x * power(x,y-1);
這樣就確保了在調(diào)用函數(shù)時會傳給power函數(shù)兩個參數(shù)供其使用,就可以防止編譯器報錯。
當(dāng)然,如果你在定義函數(shù)時創(chuàng)建了三個甚或是更多的形式參數(shù),那么就請務(wù)必在后續(xù)調(diào)用該函數(shù)時傳給它數(shù)量相同的參數(shù)供函數(shù)使用,這樣就能保證編譯器不會報錯啦。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
文章標(biāo)題:C語言有關(guān)“函數(shù)用于調(diào)用的參數(shù)太少”問題解決辦法-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://www.ef60e0e.cn/article/gjgcg.html