#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 (正解
為何??
我知道我的問題有點奇怪(請各位大幫忙解答!!!
#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 然後反轉回去.處理前面還沒結束的函數