题目
/*
生日蜡烛
某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。
现在算起来,他一共吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?
请填写他开始过生日party的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
*/
答案
26
代码
1 public class Main {
2 public static void main(String[] args) {
3 //从1岁开始试,到100岁截至
4 for(int i=1;i<100;i++){
5 boolean is=false; //判断是否得到结果,是 跳出,否 继续循环
6 int s=i,n=i; //s 从第i年开始计算生日共吹熄的蜡烛数,n每一年要吹熄的蜡烛数
7 while(true){
8 if(s==236){//总数等于236 则说明是从第i年开始计算的
9 System.out.println(i+"-"+n);//结果输出 从第i年开始到现在n年
10 is = true;
11 break;
12 }
13 if(s>236) //如果总数大于236 则说明不是从第i年开始计算的
14 break;
15 //否则继续叠加 这个代码放在if前面也可以 因为由题目可以看出肯定不会是只过了一年生日
16 n++; //下一年要吹熄的蜡烛数
17 s +=n;//继续累计吹熄的蜡烛数
18 }
19 if(is)
20 break;
21 }
22 }
23 }
解析
可以尽量用代码思想来考虑,循环试出来 ,而不用考虑到数学问题上去,这样会提升代码的逻辑难度,容易出错