【发布时间】:2018-06-29 15:55:50
【问题描述】:
有没有办法编写一个递归函数来打印数字中的位数:
-它是一个空函数
-“if”条件为 if(num==0), return
-“else”将调用递归。
我看到了 2 种不同类型的代码,其中一种是“if”条件具有递归调用,而另一种是“return”。但这不是我想要的。
我不擅长递归并试图通过自己编码来理解它,但没有成功。
这是我的代码(我明白为什么它打印 122 而不是 3,但我真的不知道它的编码方式有何不同。帮助任何人吗?)
#include <iostream>
#include <string.h>
using namespace std;
void numOfDigits(unsigned int num);
int main(){
int num = 994;
numOfDigits(num);
}
void numOfDigits(unsigned int num)
{
int size = 1;
if (num==0)
return;
else
{
if (num / 10 != 0)
size++;
numOfDigits(num / 10);
}
cout << size;
}
【问题讨论】:
-
添加
c++标签... -
@Cocoboom 为什么你需要 main 无效,有什么特别的原因吗?
-
@cauchy --
void main完全错误。但这并不影响问题本身。void要求适用于numOfDigits。 -
@cauchy 不,我的错。但正如皮特贝克尔所说