1.認識遞歸基礎知識
????????什么是方法遞歸?
????????????????遞歸是一種算法,在程序設計語言中廣泛應用。
????????????????從形式上說:方法調用自身的形式稱為方法遞歸( recursion)。
????????遞歸的形式:
????????????????直接遞歸:方法自己調用自己。
????????????????間接遞歸:方法調用其他方法,其他方法又回調方法自己。
? ? ? ? ?使用方法遞歸時需要注意的問題:
????????????????遞歸如果沒有控制好終止,會出現遞歸死循環,導致棧內存溢出錯誤。
2.方法遞歸三要素
????????遞歸的公式: f(n) = f(n-1) * n;
????????遞歸的終結點:f(1)
????????遞歸的方向必須走向終結點
3.其他應用:文件搜索
? ? ?階乘分析:? ?
/*** 猴子吃桃問題* 猴子第一天摘下若干桃子,當即吃了一半,覺得好不過癮,于是又多吃了一個* 第二天又吃了前天剩余桃子數量的一半,覺得好不過癮,于是又多吃了一個* 以后每天都是吃前天剩余桃子數量的一半,覺得好不過癮,又多吃了一個* 等到第10天的時候發現桃子只有1個了。* 需求:請問猴子第一天摘了多少個桃子?*①整體來看,每一天都是做同一個事件,典型的規律化問題,考慮遞歸三要素:②遞歸公式: f(n) = (f(n + 1) + 1) * 2③遞歸終結點:f(10) = 1④遞歸方向:從f(1)到f(10)*/
public class Test01 {public static void main(String[] args) {Integer f = f(1);System.out.println("第一天摘了:"+f);}public static Integer f(Integer n){if (n==10){return 1;}else {return (f(n + 1) + 1) * 2;}}
}--------------------
public class Test01 {public static void main(String[] args) {//2、傳入 指定月數 12 獲取int數字代表月數Integer count = getCount(12);//3、調用getCount方法傳遞月份,獲取結果并輸出System.out.println(count);}//1、定義方法getCount,根據月數(int數字month)獲取兔子對數public static Integer getCount(int month){//1.1、 判斷如果month的值是1或者2,直接返回1if (month==1 || month==2){return 1;}else {//1.2、 否則遞歸調用getCount方法分別傳遞month-1和month-2,累加求和并返回return getCount(month-1)+getCount(month-2);}}
}-------------------
package com.itheima.day09.file;import java.io.File;/*** 在電腦里找QQ的快捷方式*/
public class QQTest {public static void main(String[] args) {File file = new File("E:/");String name="QQ.exe";search(file,name);}private static void search(File file, String name) {if (file==null || file.isFile()){return;}File[] files = file.listFiles();if (files!=null){for (File fil : files) {if (fil.isFile()){if (fil.getName().equals(name)){System.out.println(fil.getAbsolutePath());}}else {search(fil,name);}}}}
}