做企业网站的研究现状,中国八大设计院排名,wordpress变为中文,wordpress添加og接着上一讲继续#xff0c;内容不多#xff0c;讲解一下递归相关内容。 1. 生活中的故事
从前有坐山#xff0c;山上有座庙#xff0c;庙里有个老和尚给小和尚将故事#xff0c;讲的就是#xff1a;
从前有座山#xff0c;山上有座庙#xff0c;庙里有个老和尚… 接着上一讲继续内容不多讲解一下递归相关内容。 1. 生活中的故事
从前有坐山山上有座庙庙里有个老和尚给小和尚将故事讲的就是
从前有座山山上有座庙庙里有个老和尚给小和尚讲故事讲的就是
从前有座山山上有座庙...
从前有座山…… 上面的两个故事有个共同的特征自身中又包含了自己该种思想在数学和编程中非常有用因为有些时候我们遇到的问题直接并不好解决但是发现将原问题拆分成其子问题之后子问题与原问题有相同的解法等子问题解决之后原问题就迎刃而解了。
2.递归的概念
一个方法在执行过程中调用自身, 就称为 递归.
递归相当于数学上的 数学归纳法, 有一个起始条件, 然后有一个递推公式.
例如, 我们求 N!起始条件: N 1 的时候, N! 为 1. 这个起始条件相当于递归的结束条件.递归公式: 求 N! , 直接不好求, 可以把问题转换成 N! N * (N-1)!
递归的必要条件
将原问题划分成其子问题注意子问题必须要与原问题的解法相同递归出口
代码示例: 递归求 N 的阶乘
public static void main(String[] args) {int n 5;int ret factor(n);System.out.println(ret ret);
}public static int factor(int n) {if (n 1) {return 1;} return n * factor(n - 1); // factor 调用函数自身
} // 执行结果
ret 120
3. 递归执行过程分析 递归的程序的执行过程不太容易理解, 要想理解清楚递归, 必须先理解清楚 方法的执行过程, 尤其是 方法执行结束之后, 回到调用位置继续往下执行.
代码示例: 递归求 N 的阶乘
public static void main(String[] args) {int n 5;int ret factor(n);System.out.println(ret ret);
}public static int factor(int n) {System.out.println(函数开始, n n);if (n 1) {System.out.println(函数结束, n 1 ret 1);return 1;} int ret n * factor(n - 1);System.out.println(函数结束, n n ret ret);return ret;
} // 执行结果
函数开始, n 5
函数开始, n 4
函数开始, n 3
函数开始, n 2
函数开始, n 1
函数结束, n 1 ret 1
函数结束, n 2 ret 2
函数结束, n 3 ret 6
函数结束, n 4 ret 24
函数结束, n 5 ret 120
ret 120
4.递归练习
代码示例1: 按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)
public static void print(int num) {if (num 9) {print(num / 10);} System.out.println(num % 10);
}
代码示例2: 递归求 1 2 3 ... 10
public static int sum(int num) {if (num 1) {return 1;} return num sum(num - 1);
}
代码示例3: 写一个递归方法输入一个非负整数返回组成它的数字之和. 例如输入 1729, 则应该返回1729它的和是19
public static int sum(int num) {if (num 10) return num;} return num % 10 sum(num / 10);
} 关于递归就这些相关知识点大家有需要自取感谢各位支持下一节我们讲述数组相关知识有需要的小伙伴记得关注。