- 一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子?
问题分析:f(i+1)=f(i)-(f(i)/2+1),i为经过的村庄数,f(i)为经过i村庄剩下的鸭子数
递归函数:f(i+1)*2+2 i<7
函数出口:f(i)=2 i=7
package 递归;
public class Duck{
public static int duck(int n)
{int sum;
if(n==8)
sum=2;
else
sum=2*(duck(n+1)+1);
System.out.println(“经过第”+n+“村庄有”+sum+“鸭子”);
return sum;
};
public static void main(String[] args){
int t =duck(1);
System.out.println(t);
}
package 递归;
public class Duck非递归 {
public static void main(String[] args){
int t=2;
int sum=0;
for(int i=8;i>1;i–){
sum=2*(t+1);
t=2*(t+1);
System.out.println(“经过第”+i+“村庄有”+sum+