问题:
一根高筋拉面,中间切一刀,可以得到2根面条。
如果先对折1次,中间切一刀,可以得到3根面条。
如果连续对折2次,中间切一刀,可以得到5根面条。
那么,连续对折10次,中间切一刀,会得到多少面条呢?
/**
* 一根高筋拉面,中间切一刀,可以得到2根面条。
* 如果先对折1次,中间切一刀,可以得到3根面条。
* 如果连续对折2次,中间切一刀,可以得到5根面条。
* 那么,连续对折10次,中间切一刀,会得到多少面条呢?
*
* 对折0次 得到2根
* 对折1次 得到 2 * 2 - 1 = 3
* 对折2次 得到 3 * 2 - 1 = 5
* 对折3次 得到 5 * 2 - 1 = 9
* 对折4次 得到 9 * 2 - 1 = 17
* 对折5次 得到 17 * 2 - 1 = 33
* 对折6次 得到 33 * 2 - 1 = 65
* 对折7次 得到 65 * 2 - 1 = 129
* 对折8次 得到 129 * 2 - 1 = 257
* 对折9次 得到 257 * 2 - 1 = 513
* 对折10次 得到 513 * 2 - 1 = 1025
*/
public class Test1 {
//使用递归 i:折叠次数
public static int test_1(int i){
if (i==0){
return 2;
}
return test_1(i-1)*2-1;
}
//使用循环
public static int test_2(int a){
int sum = 2;
for (int i = 1; i <= a; i++){
sum += Math.pow(2, i - 1);
}
return sum;
}
public static void main(String[] args) {
System.out.println("折叠10次从中间砍断会得到"+test_1(10)+"条面条");
System.out.println("折叠10次从中间砍断会得到"+test_2(10)+"条面条");
}
}
|