问题
* 切面条问题
* 一条线中间砍一刀
* 先对折一次砍一刀
* 先对折两次砍一刀
* ....
* 对折 n 次,砍一刀后分为多少段
解题
方法一
/**
* 切面条问题
* 一条线中间砍一刀
* 先对折一次砍一刀
* 先对折两次砍一刀
* ....
* 对折 n 次,砍一刀后分为多少段
* 0 2 (2^0 + 1)
* 1 3 (2^1 + 1)
* 2 5 (2^2 + 1)
*/
public static void oneLineCut(int n){
if (n < 0){
System.out.println("n 不能小于0");
return;
}
double line = Math.pow(2, n) + 1;
int lines = (int)line;
System.out.println("折叠 " + n + " 次砍一刀,共 " + lines + " 段");
}
不使用Math 方法二
public static void oneLineCut2(int n){
if (n < 0){
System.out.println("n 不能小于0");
return;
}
// 初始只有一条
int lines = 1;
// 从第一刀开始累乘 模拟次方
for (int i = 1; i <= n; i++){
lines *= 2;
}
// 最终加 1
lines += 1;
System.out.println("折叠 " + n + " 次砍一刀,共 " + lines + " 段");
}