问题:一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子?(分别用递归和非递归算法实现)
/*@西安科技大学软工1702班
*@author 侯明会
*@Java
*/
package duck;
import java.util.Scanner;
public class DuckTest {
public static int Count(int v,int leftnum) {
int num=leftnum;//鸭子总数
int sellnum=0;//在每个村子卖出的鸭子数
if(v>0) {
sellnum=num+1;
System.out.println("在第"+v+"个村子卖出的鸭子数为:"+sellnum);
v--;
num=Count(v,sellnum+leftnum);
}
return num;
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.println("请输入经过村子数和剩余鸭子数:");
int v=in.nextInt();
int leftnum=in.nextInt();
int num;//鸭子总数
int sellnum;
//调用递归算法
System.out.println("递归算法如下:");
num=Count(v,leftnum);
System.out.println("鸭子总数量为:"+num);
//非递归算法
System.out.println("非递归算法如下:");
num=leftnum;
while(v>0) {
sellnum=num+1;
num=sellnum+leftnum;
leftnum=num;
System.out.println("在第"+v+"个村子卖出的鸭子数为:"+sellnum);
v--;
}
System.out.println("鸭子总数量为:"+num);
}
}
运行结果为: