我有一个递归函数,我想计算其中的零数,如何使用常量来计算零,不允许重置.
int countZeros(int num)
{
int count = 0;
if (num > 0)
{
if (num % 10 == 0)
count++;
return(countZeros(num / 10));
}
if (num <= 0)
return count;
}
Run Code Online (Sandbox Code Playgroud)
对于我的代码,我的计数将在调用返回函数后重置.有没有办法防止这种情况发生?我必须将值返回到我的main函数并从那里显示.
case 9:
printf("Enter a number: ");
scanf("%d", &recursion);
printf("number of zeros = %d",countZeros(recursion));
break;
Run Code Online (Sandbox Code Playgroud)
试试这段代码:
int countZeros(int num)
{
if (num > 0 && num % 10 == 0)
return(countZeros(num / 10)+1);
else
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它将以相同的方式工作,只注意如果你的num是负数(但仍然用零-100,它会返回0).
要使用负数,请使用:
int countZeros(int num)
{
if (num !=0 && num % 10 == 0)
return (countZeros(num / 10)+1);
else
return 0;
}
Run Code Online (Sandbox Code Playgroud)