gpt4 book ai didi

c++ - 在 else block 中和 if block 之后执行代码

转载 作者:行者123 更新时间:2023-11-28 02:00:20 26 4
gpt4 key购买 nike

在这段代码中,我想知道在 else block 中执行的代码和在 if block 之后执行的代码有什么区别?

#include <iostream>
using namespace std;

int digits(int number, int value, int times){
int counter = times;
counter++;
int result = number/value;
value=value*10;
if (result != 0){
digits(number,value,counter);
}
return counter;
}

int main() {
int number,no_of_digit;
cout << "Enter the number : ";
cin >> number;
no_of_digit = digits(number, 10, 0);
cout << "No of digits are : " << no_of_digit << "\n";
return 0;
}

此代码无法正常工作。它给出值 1。但是,如果我将 return counter; 放在 else block 中,它就会起作用。为什么会这样?

最佳答案

上面代码的问题是在像这样使用数字函数调用中的递归调用时

counter=digits(number, value , counter);

如果你不使用上面的那个而保留一个 else 问题是 else block (return 语句)将在调用堆栈中只执行一次,最顶层的函数调用堆栈会将计数器直接返回到你的 main函数并会正确得到结果,这不是一种好的编码方式

关于c++ - 在 else block 中和 if block 之后执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39865427/

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