重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
我们在使用C语言编写程序,特别是使用函数递归时经常会遇到编译器报错“用于调用的参数太少”,如图:
站在用户的角度思考问题,与客户深入沟通,找到古丈网站设计与古丈网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、做网站、外贸营销网站建设、企业官网、英文网站、手机端网站、网站推广、主机域名、网站空间、企业邮箱。业务覆盖古丈地区。那么遇到这种情况我们该如何解决呢?
首先以下面一段代码为例向大家解释问题到底出在哪里:
#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;
}
如图,这是一段使用函数递归的方式求解n的k次方的程序代码。看似没有什么问题,但如果你原封不动的将该段代码放在编译器运行时却会导致编译器报错,如图:
然而问题就出在第 7行代码:
return x * power(y-1);
注意,power函数在定义时是创建了两个形式参数的,即x和y:
int power(int x,int y)
那么在后续调用power函数时就需要传给它两个参数才行,而第七行代码明显只传给了power函数一个参数,因此会导致编译器报错“用于调用的参数太少”。
在搞清楚了编译器为何会报错之后,我们的解决方法也非常简单,即,将原代码改为:
return x * power(x,y-1);
这样就确保了在调用函数时会传给power函数两个参数供其使用,就可以防止编译器报错。
当然,如果你在定义函数时创建了三个甚或是更多的形式参数,那么就请务必在后续调用该函数时传给它数量相同的参数供函数使用,这样就能保证编译器不会报错啦。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧