c++ - Binary To Decimal Recursion - without global variable -
i learning recursion in c++ , practice trying write binary decimal converter recursive function. in following code converter working should:
#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; } is possible return value decimalcoonversion function not using global variable? can explain how, tried next line of code not work correctly:
return bit * pow(2, power) + decimalconversion(power, number); can explain making mistake using previous line of code? thank in advance
this adds sum parameter function, makes default 0 if don't provide explictly. power defaulted 0, saves having pass function.
since default parameters must @ end of function declarations and/or definitions parameter list, had move power across achieve this.
#include <iostream> #include <cmath> #include <bitset> using namespace std; int decimalconversion (int number, int power = 0, int sum = 0) // changes here { if (number == 0) { return sum; } int bit = number % 10; sum = sum + bit * pow(2, power); number /= 10; power++; return decimalconversion(number, power, sum); // changes here } int main(){ int number = 0; cout << "enter binary number: " << endl; cin >> number; cout << "number is: " << decimalconversion(number); system("pause >> null"); return 0; } please note didn't check converts binary decimal correctly, recursion works.
you can call function so:
decimalconversion(number);
Comments
Post a Comment