算法-第四版-练习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
作者:马 岩(Furzoom) (http://www.cnblogs.com/furzoom/)
版权声明:本文的版权归作者与博客园共同所有。转载时请在明显地方注明本文的详细链接,未经作者同意请不要删除此段声明,感谢您为保护知识产权做出的贡献。
版权声明:本文的版权归作者与博客园共同所有。转载时请在明显地方注明本文的详细链接,未经作者同意请不要删除此段声明,感谢您为保护知识产权做出的贡献。

浙公网安备 33010602011771号