gpt4 book ai didi

c++ - 递归函数计算数字中的位数

转载 作者:行者123 更新时间:2023-11-30 02:21:24 24 4
gpt4 key购买 nike

有没有一种方法可以编写一个递归函数来打印数字中的位数,这样:

-这是一个空函数

-“if”条件为if(num==0),返回

-“else”将调用递归。

我看到了两种不同类型的代码,其中一种是“if”条件具有递归调用的地方,另一种是用于“返回”的地方。但这不是我想要的。

我很不擅长递归,并试图通过自己编写代码来理解它,但没有成功。

这是我的代码(我明白为什么它打印 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;
}

最佳答案

使此代码正常工作的一个快速破解方法是使 size 静态,即更改

int size = 1;

static int size = 1;

但这仅在您第一次调用该函数时有效。

为了更稳健的解决方案,在每次调用函数时,您必须传递到目前为止的计数:

void numOfDigits(unsigned int num, int countSoFar = 0) {
if (num == 0)
std::cout << countSoFar << '\n';
else
numOfDigits(num / 10, countSoFar + 1);
}

关于c++ - 递归函数计算数字中的位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48357518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com