Ⅰ java 能否用遞歸處理循環嵌套
這種方法看似很麻煩,但是比用遞歸調用要好一點,從系統資源的方面說,他要比遞歸調用自身的函數要佔用更少的空間,遞歸調用的時候會佔用相當的內存來保護現場,之後還要恢復現場,遞歸函數不是很好的方法!
for循環看上去會有一點點的亂,但寫起來還不算麻煩,適當的代碼縮進能讓程序變得友好,也能很清晰的看出程序運行的結構。
在這里我結合你的想法和遞歸函數的空間開銷,選擇了一個還算可以的方法,代碼如下:
public class Text {
int function(int max, int sum)
{
for(int i=0;i<=max;i++)
{
sum=sum+i;
System.out.println(sum);
}
return sum;
}
/**
* @param args
*/
public static void main(String[] args) {
int sum=0;
int max=9;
int count=4;
Text demo=new Text();
while(count>=1)
{
sum=demo.function(max, sum);
count=count-1;
}
}
}
具體到你想要的程序中就另當別論了,可以做適當的更改!
因個人能力有限,只能貢獻一點微薄的力量,希望對你有用!
如果有什麼其他的問題,不妨直接發到信箱,方便能看到你的問題,能和你及時的探討,共同學習,先謝了!
信箱:[email protected]
Ⅱ java遞歸方法里有for循環,for循環里又調用這個遞歸方法是否可以
可以 你自己注意循環 和遞歸結束條件 不要進入死循環
Ⅲ java的循環能不能直接轉換成遞歸
看是什麼情況但是需要一個結束遞歸的條件
比如:
int i=0;
int a(int i){
if(i==8){ 終結條件
return i;
}
i++;
return a(i);
}
調用方法 a(i);
這就是一個簡單的遞歸,但是連續調用方法是很消耗的,所以遞歸一般不建議使用
一、函數調用需要使用內存中的棧來保存函數的數據以及訪問鏈和控制鏈,如果數據是必須的,那麼訪問鏈和控制鏈等所佔的內存則是額外的。
二、使用遞歸,會進行很深層次的調用函數,所以需要調用很多函數,需要建立許多的訪問鏈和控制鏈,佔用大量內存,而且調用時傳遞參數,申請空間,返回時恢復現場,都有時間的花銷,所以遞歸效率低。
三、內存的棧當作一個容器,每次遞歸,函數都往容器中添加容量,當添到一定層次,容器滿了,就溢出了,如果用遞歸,如果忘記了遞歸截至條件,你就可能進入了無窮遞歸,無窮遞歸必然會溢出,所以,不提倡遞歸
Ⅳ Java遞歸實現n層循環
publicclassMyTest{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODO自動生成的方法存根
double[]A={3.75,3.1};
double[]B={3.75,3.95};
double[]C={2.33,3.8,15};
mul(0,A,B,C);
//mul(0,0,0,A,B,C);
}
privatestaticvoidmul(inti,double[]A,double[]B,double[]C)
{
if(i<A.length)
{
for(intj=0;j<B.length;j++)
{
for(intk=0;k<C.length;k++)
{
System.out.println(A[i]+"*"+B[j]+"*"+C[k]);
}
}
i++;
mul(i,A,B,C);
}