我嘗試使用堆疊函式將十進制數轉換為二進制數并將堆疊函式值回傳給主函式,但我無法將正確的結果輸出到螢屏。(對不起我的英語)
#include<iostream>
#include<stack>
using namespace std;
stack<int> BinaryNum(int k, stack<int> st){
if(k >= 1){
st.push(k % 2);
return BinaryNum(k / 2, st);
}
if(k < 1)
return st;
}
int main(){
int k;
cin >> k;
stack<int> st;
BinaryNum(k,st);
while(!st.empty()){
cout << st.top();
st.pop();
}
}
uj5u.com熱心網友回復:
您丟棄BinaryNumin的結果main,并傳遞堆疊的副本。
要么使用結果
int main(){
int k;
cin >> k;
stack<int> st;
st = BinaryNum(k,st);
while(!st.empty()){
cout << st.top();
st.pop();
}
}
或st參考BinaryNum
stack<int> BinaryNum(int k, stack<int> & st){
if(k >= 1){
st.push(k % 2);
return BinaryNum(k / 2, st);
}
if(k < 1)
return st;
}
uj5u.com熱心網友回復:
您忘記將函式的回傳值存盤在變數中st。換行就好
BinaryNum(k,st);
到
st = BinaryNum(k,st);
它會起作用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/444590.html
上一篇:如何使用遞回將兩個正整數相乘?
