做功课的一些疑问
我是初学者,目前学到loop那一块。题目要求一个整数的 二进制表达式里1的数量。
比如55=2^5*1+2^4*1+2^3*0+2^2*1+2^1*1+2^0*1
二进制表达式就是110111
那么函数所得的结果应该是5.
我的思路是这样
55为奇数
55/2=27奇数
27/2=13奇数
13/2=6偶数
6/2=3奇数
3/2=1奇数。
我的思路是: 1的数量和按以上方法得到的奇数的数量相等。
但while和for只帮那些符合条件的情况运作。比如每等于一次奇数那计数器+1. 以55为例子,到13的时候计数器为3,但到6的时候loop就停止了,少了一个。
我就是想知道有没有方法能让得到奇数的时候计数器+1,得到偶数时计数器不变。
写了一天了,都是错的,求大家帮帮忙
还有点没说,不让用循环,指明要用loop.
循环的code是这样:
int binr(int i){
return
(i==1)? 1:
(i%2==1)? 1+binr(i/2):
binr(i/2);
}
[ 本帖最后由 wbw626 于 2013-6-16 14:45 编辑 ]