首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

算法题解决方案

2012-04-16 
算法题给定一个数字n,如果n是偶数就让n/2,如果是奇数就让n +1或-1,例n 31n n - 1 //30n n / 2 //

算法题
给定一个数字n,如果n是偶数就让n/2,如果是奇数就让n +1或-1,例
n = 31;
n = n - 1; //30
n = n / 2; //15
n = n + 1; //16
n = n / 2; //8
n = n / 2; //4
n = n / 2; //2
n = n / 2; //1
问:怎样能够以最少的计算次数,算出n = 1;

[解决办法]
不知道这样可以么?

Java code
public class Test1 {    public static void main(String[] args) {        int n = 31;                if(n < 1) {            return;        }        int count = 0;                while(n != 1) {                        if(n % 2 == 0) {                n /= 2;                            } else {                if((n & 2) == 0 || n == 3) {                    n--;                } else {                    n++;                }            }            count++;            System.out.println(count + ": " + n);        }        System.out.println("Total: " + count);    }} 

热点排行
Bad Request.