【发布时间】:2021-05-16 14:36:13
【问题描述】:
我编写了这段代码,它使用递归计算整数中有多少个 1。 N 必须小于 9 位。我似乎找不到我的代码有什么问题以及为什么它不起作用。如果有人能提示我哪里出错了,我将不胜感激。
#include <stdio.h>
#include <assert.h>
int count_ones(int n);
int main()
{
assert(count_ones(1001)==2);
}
int count_ones(int n)
{
int sum = 0;
int x;
if(n == 0)
{
return sum;
}
else if(n > 999999999)
{
return sum;
}
else if(n <= 999999999)
{
x == n%10;
if (x == 1)
{
sum = sum + 1;
count_ones(n/10);
}
else
{
count_ones(n/10);
}
}
return sum;
}
【问题讨论】:
-
请使用您的调试器。问题是您没有添加递归调用的结果。
-
x == n % 10;是干什么用的?
标签: c recursion counting function-definition