有一堆煤球,堆成三角棱锥形。具体:
第一层放1个,
第二层3个(排列成三角形),
第三层6个(排列成三角形),
第四层10个(排列成三角形),
....
如果一共有100层,共有多少个煤球?
方法一
public class p2_06_f1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 煤球数目
// 有一堆煤球,堆成三角棱锥形。具体:
// 第一层放1个,
// 第二层3个(排列成三角形),
// 第三层6个(排列成三角形),
// 第四层10个(排列成三角形),//1
//1+2
//递归思想
int n=100;
int sum=0;
// System.out.println(f(n));
for (int i = 1; i <= 100; i++) {
sum += f(i);//f(i)//每一层的数目
}
System.out.println(sum);
}
public static int f(int n) {
if(n==1) {
return 1;//f(1)=1
}else{
return f(n- 1) + n; //2 f(2-1)+2=1+2=3
//3 f(3-1)+3=f(2)+3=6
//4 f(4-1)+4=f(3)+4=10
}
}
}
方法二
package CSND_easily;
public class p2_06_f2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//前缀和思想
int n=100;
int count=0;
int []arr=new int [n];//1 2 3 4 5 6……100
int []sum=new int [n+1];// 1 3 6 10 15 21……
for (int i = 1; i <=n; i++) {//sum[0]=0
sum[i]=sum[i-1]+i;//1=0+1 sum[1]=1
//3=1+2 sum[2]=sum[2-1]+2=sum[1]+2=3
//6=3+3 sum[3] =sum[3-1]+3=sum[2]+3=6
//……
//sum[100]=sum[100-1]+100=sum[99]+100=5050
count+=sum[i];//
}
System.out.println(sum[n]);
System.out.println(count);
}
}