在递归中返回完整值
Returning the complete value in recursions
我编写了一个C++代码来将基数为 10 的数字转换为基数 2,但不希望函数打印它,而是返回值,因为我稍后需要在另一个函数中使用它。返回的问题在于,它第一次返回时会脱离函数,因此它不会完成转换过程,而不是为"5"返回"101",它将简单地返回"1",仅此而已。有什么想法可以解决这个问题吗?我提前表示赞赏。 这也是我的代码:
int two;
int base(int a)
{
if(a==1)
{
two=a%2;
}
else
{
base(a/2);
two=a%2;
}
return two;
}
注意:当然,如果我将返回类型更改为 void 并简单地打印值,代码效果很好。但我想返回值。
总结的实现(实际上它可以迭代实现,但似乎你需要应用递归,所以我提供了递归解决方案(:
int baseHelper(int a, int factor)
{
int returnedValue = 0;
if(a==0 || a==1)
returnedValue = factor * a;
else
{
int addend = factor * (a%2);
returnedValue = addend + baseHelper(a/2, factor*10);
}
return returnedValue;
}
int base(int a)
{
return baseHelper(a, 1);
}
int main()
{
for(int i=0; i<=256; i++)
cout << "i=" << i << " " << base(i) << endl;
return 0;
}
如果你想使用递归,你可以像这样返回std::string
:
std::string base(int a)
{
if (a == 0)
return "0";
else if (a == 1)
return "1";
else
return base(a / 2) + ((a % 2) ? "1" : "0");
}
使用<charconv>
中的std::to_chars
或std::from_chars
也是一种替代方法。
相关文章:
- 返回递归调用和仅递归调用的区别
- 如何从递归函数中完全返回,该函数给出了每个函数结果的累积相加?
- 如何使此递归函数从给定的起始位置返回最小的整数?
- 如何在递归函数调用中返回当前函数值
- 在递归中返回完整值
- 递归函数的返回类型推导
- 查找存储在二叉搜索树的所有非叶子中的数据总和?(返回整数的独立递归函数
- 返回未定义行为的递归行列式函数
- 返回不停止函数,递归函数问题?(编程练习,动态规划,Levenshtein 回溯)
- 从递归函数 C++ 返回多个值
- 递归返回可被给定整数 k 整除的位数
- 如何使用递归函数返回数组中整数的索引?
- 不理解此递归函数中的返回 (C++)
- C++ 递归:返回数字的最小偶数
- 递归函数始终返回 false
- 返回向量 C++ 上的递归
- 在递归和基本流中返回
- 从 C++ 中的函数返回递归 lambda
- 返回递归函数的bool意外地更改了变量
- c++中调用和返回递归函数的区别