算法-第四版-练习1.3.5解答

当N为50时下面这段代码会打印什么?从较高的抽象层次描述给定正整数N时这段代码的行为。

        Stack<Integer> stack = new Stack<Integer>();
        while (n > 0)
        {
            stack.push(n % 2);
            n = n / 2;
        }
        for (int d : stack)
        {
            System.out.print(d);
        }
        System.out.println()


n % 2得到n的二进制最低位上的值,0或者1。故上述代码就是将n的二进制位数值依次入栈,然后从栈顶将出输出,即为n的二进制表示。

测试代码:


/**
 * Description : 
 * Author      : mn@furzoom.com
 * Date        : Sep 28, 2016 4:12:17 PM
 * Copyright (c) 2013-2016, http://furzoom.com All Rights Reserved.
 */
package com.furzoom.lab.algs.ch103;

/**
 * ClassName    : E10305 <br>
 * Function     : TODO ADD FUNCTION. <br>
 * date         : Sep 28, 2016 4:12:17 PM <br>
 * 
 * @version 
 */
public class E10305
{
    public static void main(String[] args)
    {
        int n = 50;
        Stack<Integer> stack = new Stack<Integer>();
        while (n > 0)
        {
            stack.push(n % 2);
            n = n / 2;
        }
        for (int d : stack)
        {
            System.out.print(d);
        }
        System.out.println();
    }

}
输出:

110010


算法-第四版-1.3 背包、队列和栈-习题索引汇总

算法-第四版习题索引汇总

作者:马 岩Furzoom) (http://www.cnblogs.com/furzoom/
版权声明:本文的版权归作者与博客园共同所有。转载时请在明显地方注明本文的详细链接,未经作者同意请不要删除此段声明,感谢您为保护知识产权做出的贡献。
原文地址:https://www.cnblogs.com/furzoom/p/7710205.html