在编写递归函数时,保持得到相同的答案

  • 本文关键字:答案 递归函数 c
  • 更新时间 :
  • 英文 :


注意:我对C编程还很陌生,所以我还不知道所有的东西。

因此,我正在为我的编程类做这项作业,我必须编写一个递归函数count_digits((,它计算字符串中的所有数字。我编写了这个程序并将其编译,但当我输入一个数字时,它总是给我相同的答案。

这就是我的代码:

#include <stdio.h>
int count_digits(int num)
{
static int count=0;
if(num>0)
{
count++;
count_digits(num/10);
}
else
{
return count;
}
}
int main()
{
int number;
int count=0;
printf("Enter any number:");
scanf("%d",&number);
count=count_digits(number);
printf("nTotal digits in [%d] are: %dn",number,count);
return 0;
}

如果num大于零,则非void函数不返回任何值。编译器应该警告您不要返回值。修复:

return count_digits(num/10);

需要考虑以下几点:如果在程序中多次调用函数count_digit((,会发生什么?如果您输入0、10、100作为数字,该怎么办?

也许您应该重新考虑在这里使用静态变量。同样为了调试,在count_digit((中插入一些printfs(或使用调试器(来检查函数的行为。

最新更新