给你一个int型数,如 n, 判断它是不是2的多少次方,若是的,打印出来是多少次方?

给你一个int型数,如 n, 判断它是不是2的多少次方,若是的,打印出来是多少次方  
比如 n=8 2的3次方=8 所以打印3
  n=5 直接cout<<"no"就可以了
要求,不准用循环,不准用库函数

想不通,睡不着啊,
我只知道 n&(n-1)可以判断是不是满足条件,但是要确定是多少次方,而且不能用循环。
#include #include using namespace std; int log2(int n) { if(1 == n) return 0; else return 1 + log2(n>>1); } int main(int argc, char *argv[]) { int n; printf("please input an interger: "); cin>>n; if(n & (n-1)) printf("n is not 2 的N次方./n"); else printf("n is 2 的%d次方./n", log2(n)); system("PAUSE"); return EXIT_SUCCESS; }  
http://topic.csdn.net/u/20110614/01/16affc97-0f0c-43e7-b874-28b019a0d759.html?seed=546114972&r=73921429#r_73921429
http://topic.csdn.net/u/20110618/14/d779583c-96a8-452d-a384-b73cac1c9bc8.html?42937

你可能感兴趣的:(算法与数据结构)