这题用到了递归的思想,根据题目中鸭子数量每天减去一半又一只,可以得到数量关系:每次交易之前鸭子的总数为交易之后的数目加一乘以二;写一个函数表示当天交易前的数量,参数为天数.
递归需要条件限制,所以第八天没有交易或者说是交易前,剩两只.
七天以内该函数自己调用自己.
我迷惑的地方是函数自己调用自己就很神奇,我怀疑是有了if条件限制的结果,才能让将计算机能够调用自身函数,有篇文章说把数量关系找好,剩下的交给计算机大概就是这个意思吧.
public static int count(int n){//n表示第几个村子
int sum=2;//鸭子总数剩两只
if(n==8){
return 2;//第八天没有交易之前还剩两只鸭子
}
else{
sum=(count(n+1)+1)*2;//八天之前每天的交易前的鸭子总数为交易后所剩的数目加一乘以二
}
return sum;
}
public static void main(String []args){
for (int i=1;i<8;i++){
System.out.println("第"+i+"天的村子交易前有"+count(i)+"只鸭子,当天村子卖出"+(count(i)/2+1)+"只.");
}
}