java笔试题递归,递归(网上搜的一些笔试题)
一個射擊運動員打靶,靶一共有10環,連開10槍打中90環的可能性有多少種?請用遞歸算法編程實現。
public class Cs
{
public int times;
public int score;
public int[] loops;
public int count=0;
public static void main(String[] args)
{
Cs cs=new Cs(10,90);
cs.loop(10);
System.out.println(cs.count);
}
public Cs(int times,int score)
{
this.times=times;
this.score=score;
loops=new int[times];
}
public void loop(int cur)
{
if(cur==0)
{
if(score!=0)
return;
count++;
return;
}
cur--;
for(int i=10;i>0;i--)
{
loops[cur]=i;
score-=i;//模擬嵌套for循環
loop(cur);
score+=i; //狀態恢復
}
}
}
輸入兩個整數n和m,從數列1、2、3、...n中任意取幾個數,使其和等于m,要求將其中所有可能的組合都列出來
public class Cs
{
public int n;
public int m;
public int[] result;
public int count=0;
public static void main(String[] args)
{
Cs cs=new Cs(10,50);
cs.loop();
System.out.println(cs.count);
}
public Cs(int n,int m)
{
this.n=n;
this.m=m;
result=new int[n];
}
public void loop()
{
int[] loops=new int[n];
result=new int[n];
for(int i=0;i
loops[i]=i+1;
loop(n,loops);
}
private void loop(int cur,int[] _loop)
{
if(m<=0||_loop.length==0)
{
if(m!=0)
return;
count++;
for(int i=0;i
System.out.print(result[i]+",");
System.out.println("");
return;
}
cur--;
for(int i=0;i<_loop.length>
{
result[cur]=_loop[i];
m-=_loop[i];
//等到最終結果需要不重復,可以按元素大小排序來得到下一步_loop
int[] _loop_=new int[cur];
for(int j=i+1;j<_loop.length>
_loop_[j-i-1]=_loop[j];
loop(cur,_loop_);
m+=_loop[i]; //狀態恢復
}
}
}
總結
以上是生活随笔為你收集整理的java笔试题递归,递归(网上搜的一些笔试题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 一片空白,解决运行PHP一片空白
- 下一篇: Oracle 加密配置,Oracle s