重復(fù)的反饋某一過程(操作)叫迭代,
成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站制作、成都網(wǎng)站建設(shè)與策劃設(shè)計,龍山網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:龍山等地區(qū)。龍山做網(wǎng)站價格咨詢:18980820575
在java中,就是循環(huán)重復(fù)的進行某一操作,比如一個程序要累加1到100的和,
那么只要定義一個變量sum,讓它重復(fù)的進行累加操作:
int sum =0;
for( int i=1; i=100; i++ ){
sum = sum +i;
}
其中執(zhí)行一次sum = sum + i ;就稱之為一次迭代,每一次迭代得到的結(jié)果(sum + i 的和)會作為下一次迭代的初始值(結(jié)果賦值給sum變量后,這個變量又作下一次迭代的初始值);這就是迭代與普通循環(huán)的區(qū)別。
迭代是普通的循環(huán)。
例:求從1加到10
int sum=0
for(int i=0;i= 10;i++){
sum=sum+i;
}
遞歸是指一個函數(shù)直接或間接調(diào)用自己。
好比:從前有個廟廟里有個大和尚和小和尚,大和尚叫小和尚講故事,小和尚說從前有個廟廟里有個大和尚和小和尚,小和尚叫大和尚講故事,大和尚說從前....
遞歸的特點:
必有三個條件:
1. 間接或直接調(diào)用自己。
2. 一定要有退出的條件(比方說大和尚口干了不聽故事了)。否則就是死循環(huán)
3。要有邏輯體(想要做的事);
public int sum(int x){
if(x=0){
return x;
}
return x+sum(x-1);
}
int s=10;
int total=sum(s);
該例中,sum函數(shù)總是調(diào)用自己,return x+sum(x-1);
sum有退出條件, x=0
最后的結(jié)果是把 10+9+8+7+... 1 返回
在很多種情況下,迭代和遞歸都可以完成相同的功能, 不過遞歸有些功能迭代就完成不了。 并且代碼沒有遞歸簡潔,熟練使用遞歸后能提高代碼質(zhì)量。
java有個enum類型的,不過個人覺得用處不是很大,你就在里面聲明幾個可能會用到的東西..其實如果不用枚舉也沒什么大礙吧. 迭代很重要,Collection接口繼承自iterable接口,iterable接口中定義了iterate(迭代)方法,所以一切實現(xiàn)Collection接口的類必須提供iterate方法。 迭代的概念也不是很難,就是說如果我一張鏈表里面存了100個元素,你可以用迭代器不斷的區(qū)訪問鏈表中的元素。 for example LinkedList list = new LinkedList //suppose we have added 100 elements for(Iterator itr = list.iterator;itr.hasNext();){ System.out.println(itr.next()); }
java.lang.StackOverflowError 是遞歸太深的意思 !通過報這個錯是你的遞歸寫錯了!
就是這里
else{
return fun(x)+fun(x-1);
}
你fun(x)里面又調(diào)用 f(x)這樣就會無限遞歸下去!自然報錯
不知道你想要怎么的效果
照你的意思應(yīng)該是 fab 數(shù)列 那應(yīng)該是 return fun(x-1)+fun(x-2);
public static void main(String[] args) {
Test test = new Test();
test.addNum();
}
private int num = 0;
public void addNum() {
num++;
if(num==10){
System.exit(0);
}else{
System.out.println(num);
addNum();
}
} 一個 很簡單的程序 ! 其實迭代很簡單 就是 判斷一些條件 然后 自己調(diào)用自身!就行了
1、迭代主要是對一些集合類如List、map等進行迭代
2、獲取集合類對象,如List
dataList
3、獲取dataList的迭代器
4、利用while循環(huán)迭代
示例:
List
dataList
=
new
ArrayList
dataList.add("北京");
dataList.add("天津");
//獲取dataList的迭代器
Iterator
it
=
dataList.iterator();
while(it.hasNext()){
System.out.println(it.next());
}