package first; import java.util.Stack; public class first { static int time=10; /** * 一个射击运动员打靶,靶一共有10环,连开10枪打中90环的可能性有多少种? * 请用递归算法编程实现。[中国某著名通信企业H面试题] * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub // 连续开枪的次数 // 打枪的的总环数环数 int Boomcount = 0; Stack<Integer> li=new Stack<Integer>(); Hitprobability(li,time,Boomcount); } private static void Hitprobability(Stack<Integer> li, int time,int boomcount) { // TODO Auto-generated method stub if(time>0) { for(int i=0;i<11;i++) { if(10*(11-time)-boomcount-i<=10) { li.push(i); Hitprobability(li, time-1, boomcount+i); li.pop(); } } }else if(time==0) { if(boomcount==90) { for(int i:li) { System.out.print(i+"--"); } System.out.println(""); } } } }