#16699: AC了....但有個疑問


kolagh7486 (電腦前的咖啡)

學校 : 國立臺中高級工業職業學校
編號 : 88363
來源 : [1.200.121.142]
最後登入時間 :
2022-09-24 16:06:42
a034. 二進位制轉換 | From: [111.246.87.216] | 發表日期 : 2019-01-30 21:42

#include<iostream>

using namespace std;

int x;
void carry(int);


int main()
{
while(cin>>x)
{
carry(x);
cout<<"\n";
}

}

void carry(int x)
{
if(x>=2)
{
carry(x/2);
cout<<x%2;
}
if(x<2)
{
cout<<x;
}

}

 

-----------------------------------------------------------------

void carry(int x)
{
if(x>=2)
{
carry(x/2);
cout<<x%2;
}
if(x<2)
{
cout<<x; 
}

}

以上假如是輸入55

cout的順序應該是1 1 1 0 1 1

但最後卻顯示 1 1 0 1 1 1 (正解

為何??

我知道我的問題有點奇怪(請各位大幫忙解答!!!

 
#16700: Re:AC了....但有個疑問


shkevin (kevin)

學校 : 國立溪湖高級中學
編號 : 83084
來源 : [182.155.113.140]
最後登入時間 :
2024-11-01 17:11:09
a034. 二進位制轉換 | From: [182.155.126.126] | 發表日期 : 2019-01-30 21:50

#include

using namespace std;

int x;
void carry(int);


int main()
{
while(cin>>x)
{
carry(x);
cout<<"\n";
}

}

void carry(int x)
{
if(x>=2)
{
carry(x/2);
cout<<x%2;
}
if(x<2)
{
cout<<x;
}

}

 

-----------------------------------------------------------------

void carry(int x)
{
if(x>=2)
{
carry(x/2);
cout<<x%2;
}
if(x<2)
{
cout<<x; 
}

}

以上假如是輸入55

cout的順序應該是1 1 1 0 1 1

但最後卻顯示 1 1 0 1 1 1 (正解

為何??

我知道我的問題有點奇怪(請各位大幫忙解答!!!


你的解法是利用遞迴的方法來進行,所以  cout 是到最後才會印出來 

     >>  cout的順序應該是1 1 1 0 1 1  << 錯唷, 順序是反的  110111 才對

  carry(55) => carry(27) ==> carry(13) ==>carry(6)== >carry(3)==>carry(1 ) 這裡結束 印出.X 然後反轉回去.處理前面還沒結束的函數

 
ZeroJudge Forum