算法:切面条
- 一根高筋面条,中间切一刀,可以得到2根面条
- 如果先对折1次,切一刀,可以得到3根面条
- 连续对折两次,切一刀,可以得到5根面条
- 请问对折n次,得多少面条
分析:
- 不对折(对折零次):会得到2条,
2=2
- 对折一次:会得到三条,
3= ?=2+1=2+2^0
- 对折两次:得到5条,
5= ?= 2+2+1 = 2+2^1+ 2^0
- 以此类推,对折n次:得到
2+2^0+ 2^1+2……+2^n
代码
public class Noodles {
static int cut_noodles(int times){
int t = 1,result = 2;
for (int i = 0;i < times;i++){
result += t;
t = t * 2;
}
return result;
}
public static void main(String[] args) {
int result;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入对折次数:");
int times = scanner.nextInt();
int count = cut_noodles(times);
System.out.println(count);
}
}
结果