求整数N的二进制表示中1的个数

2017-02-24  本文已影响0人  寒冰豌豆

问题:编写一个递归方法,返回数N的二进制表示中1的个数

解决:利用这样一个事实:如果N是奇数,那么它等于N/2的二进制表示中1的个数加1

include <iostream>
using namespace std;

int getones( int N)
{
    if(N==1)
         return 1;
     if( N%2)
          return   getons(N/2) +1;
      else return 1;
 }
 int main()
 {
 
     int N;
     while(1){
         cout<<"请输入一个整数:"<<endl;
         cin>>N;
         if(N==-1)break;
        cout << getones(N);
     }
     return 0;
 }     
上一篇 下一篇

猜你喜欢

热点阅读