我的代码如下:
/计算整数中的位数
#include <iostream>
using namespace std;
int countNum(int n,int d){
if(n==0)
return d;
else
return (n/10,d++);
}
int main(){
int n;
int d;
cout<<"Enter number"<<endl;
cin>>n;
int x=countNum();
cout<<x;
return 0;
}
我无法找出错误,它说:函数`int countNum(int,int)'的参数太少,这是什么问题?
9条答案
按热度按时间rsaldnfx1#
因为你声明了函数接受两个参数:
而你没有传入任何东西:
你可能想这样称呼它:
还有这个:
应该是这样的
另外,您也没有初始化
n
和d
变量:最后,您根本不需要
d
参数。这里有一个更好的版本:并且here是工作示例。
cu6pst1q2#
int x=countNum();
调用函数应该将实际参数传递给调用函数。你已经定义了函数countNum(int, int)
,这意味着它将从调用函数接收两个int作为参数,所以调用者应该传递它们,这在你的例子中是缺失的。这是错误的原因太少的参数。2izufjch3#
您的代码:
countNum需要用两个整数调用。例如
disho6za4#
因为您还没有向
countNum
函数传递参数。像int x=countNum(n,d);
一样使用它yshpjwxd5#
假设这不是一个任务,有更好的方法来做到这一点(只是几个例子):
转换为字符串
循环
尾端递归
注意:打开尾端递归优化后,编译器会将其转换为一个循环,防止调用堆栈出现不必要的溢出。
xyhw6mcr6#
将其更改为:
您不需要传入
d
,只需将0
作为种子传入即可。也将
countNum
更改为:c9qzyr3d7#
9rygscc18#
试试这个!在youtube上阅读关于PMI的信息。它使递归变得非常容易
yzuktlbb9#
您的函数写得不正确。例如,不清楚为什么它有两个参数,也不清楚它在哪里递归地调用自己。
我会这样写
或者更好的定义是