java递归算法例子,递归算法案例
递归三要素:
1、明确递归终止条件;
2、给出递归终止时的处理办法;
3、提取重复的逻辑,缩小问题规模。
1、1 2 3 … n
导入Java。util。扫描仪;
公共类递归{
公共静态void main(String[] args) {
扫描仪输入=新扫描仪(系统。在);
int n=in。nextint();
系统。出去。println(sum(n));
}
公共静态int sum(int n) {
if(n==1) {
返回n;
}
否则{
返回n sum(n-1);
}
}
}2、1 * 2 * 3 *……* n
(推荐学习:java视频教程)
导入Java。util。扫描仪;
公共类递归{
公共静态void main(String[] args) {
扫描仪输入=新扫描仪(系统。在);
int n=in。nextint();
系统。出去。println(multiply(n));
}
公共静态int multiply(int n) {
if(n==1) {
返回n;
}
否则{
返回n *乘(n-1);
}
}
}3、斐波那契数列
前两项均为1,第三项开始,每一项都等于前两项之和。即:1,1,2,3,5,8,…
导入Java。util。扫描仪;
公共类递归{
公共静态void main(String[] args) {
扫描仪输入=新扫描仪(系统。在);
int n=in。nextint();
系统。出去。println(fun(n));
}
公共静态利息基金(利息)
如果(n=2) {
返回1;
}
否则{
返回乐趣(n-1)乐趣(n-2);
}
}
}4、二叉树的遍历(前、中、后)
导入Java。util。数组;
导入Java。util。链表;
公共类MyBinaryTree {
//二叉树节点
私有静态类TreeNode{
(同Internationalorganizations)国际组织数据;
TreeNode leftChild
TreeNode right智利
公共TreeNode(整数数据){
this.data=数据
}
}
//构建二叉树
公共静态TreeNode createBinaryTree(链接表整数输入列表){
TreeNode节点=空
if(输入列表==null 输入列表。isempty()){
返回空
}
整数数据=输入列表。首先删除();
//如果元素为空,则不再递归
如果(数据!=null){
node=新的TreeNode(数据);
节点。left child=createBinaryTree(输入列表);
节点。右智利=createBinaryTree(输入列表);
}
返回节点;
}
//前序遍历:根节点,左子树,右子树
公共静态无效预订行程(TreeNode节点){
if (node==null) {
返回;
}
系统。出去。println(节点。数据);
预订旅行(节点。左孩子);
预订旅行(节点。右智利);
}
//中序遍历:左子树,根节点,右子树
公共静态横向无效(TreeNode节点){
if(node==null) {
返回;
}
inOrderTraveral(节点。左孩子);
System.out.println(节点);
inOrderTraveral(节点。右智利);
}
//后序遍历:左子树,右子树,根节点
公共静态作废订单旅行(TreeNode节点){
if (node==null) {
返回;
}
postOrderTraveral(节点。左孩子);
postOrderTraveral(节点。右智利);
系统。出去。println(节点。数据);
}
公共静态void main(String[] args) {
链表整数输入列表=新链表整数(数组。as list(new Integer[]{ 3,2,9,null,null,10,null,null,8,null,4 });
TreeNode TreeNode=createBinaryTree(输入列表);
System.out.println(前序遍历:);
前序横向(treeNode);
System.out.println(中序遍历:);
按顺序遍历(treeNode);
System.out.println(后序遍历:);
订单后旅行(treeNode);
}
}相关文章教程分享:java入门教程以上就是爪哇岛递归算法实例的详细内容,更多请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。