【发布时间】:2014-04-24 03:35:21
【问题描述】:
我正在学习 C++ 中的递归,并且作为实践,我试图用递归函数编写二进制到十进制转换器。在以下代码转换器中正常工作:
#include <iostream>
#include <cmath>
#include <bitset>
using namespace std;
int sum = 0;
int DecimalConversion (int power, int number){
int bit;
if (number == 0)
{
return 0;
}
bit = number % 10;
sum = sum + bit * pow(2, power);
number /= 10;
power++;
DecimalConversion(power, number);
return sum;
//return bit * pow(2, power) + DecimalConversion(power, number);
}
int main(){
int power = 0;
int number = 0;
cout << "Enter binary number: " << endl;
cin >> number;
cout << "Number is: " << DecimalConversion(power, number);
system("PAUSE >> NULL");
return 0;
}
不使用全局变量是否可以从DecimalCoonversion 函数返回值?谁能解释一下,我尝试了下一行代码,但它不能正常工作:
return bit * pow(2, power) + DecimalConversion(power, number);
谁能解释我使用前一行代码出错的地方? 提前谢谢你
【问题讨论】:
-
提示:你应该使用对
DecimalConversion的递归调用的返回值。 -
Mmm no ...`变量“sum”正在使用而没有被初始化。`我抛出了异常,这就是我使用全局变量的原因 - 因为我不能在里面使用
int sum=0;功能 -
@hajrovica 我第一次看错了,抱歉。请参阅我的答案以获取更新的回复。
-
@hajrovica 您注释掉的那一行对我来说效果很好。它有什么问题? (您根本不需要
sum变量。) -
是的,我注释掉了作品,但它没有计算出正确的值