??個人主頁:修修修也
??所屬專欄:程序調(diào)試及報錯解決
??操作環(huán)境:Visual Studio 2022
問題描述
我們在使用C語言編寫程序,特別是使用函數(shù)遞歸時經(jīng)常會遇到編譯器報錯“用于調(diào)用的參數(shù)太少/太多”,如圖:
那么遇到這種情況我們該如何解決呢?
原因分析
首先以下面一段代碼為例向大家解釋問題到底出在哪里:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int 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ù)使用,這樣就能保證編譯器不會報錯啦。
相關(guān)文章推薦
【C語言】判斷字符類型的三種方法
【C語言】qsort()函數(shù)詳解:能給萬物排序的神奇函數(shù)
【C語言】整形數(shù)據(jù)和浮點型數(shù)據(jù)在內(nèi)存中的存儲
【C語言】結(jié)構(gòu)體的大小是如何計算的(結(jié)構(gòu)體對齊)文章來源:http://www.zghlxwxcb.cn/news/detail-400367.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-400367.html
到了這里,關(guān)于C語言有關(guān)“函數(shù)用于調(diào)用的參數(shù)太少”問題解決辦法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!