博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 递归算法
阅读量:7238 次
发布时间:2019-06-29

本文共 895 字,大约阅读时间需要 2 分钟。

1.递归算法基本思路:

  Java递归算法是基于Java语言实现的递归算法。递归算法是一种直接或者间接调用自身函数或者方法的算法。递归算法实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法表示问题的解。递归往往能给我们带来非常简洁非常直观的代码形式,从而使我们的编码大大简化,然而递归的思维确实跟我们的常规思维相逆的,通常都是从上而下的思维问题,而递归趋势从下往上的进行思维。

2.递归算法解决问题的特点:

  • 递归就是方法里调用自身
  • 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口
  • 递归算法代码显得很简洁,但递归算法解题的运行效率较低。所以不提倡用递归设计程序。
  • 在递归调用的过程中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。

  在做递归算法的时候,一定把握出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口就是一个条件,当满足了这个条件的时候我们就不再递归了。

3.代码示例:

1
2
3
4
5
6
7
8
public 
class 
Factorial {
    
//this is a recursive function
    
int 
fact(
int 
n){
        
if 
(n==
1
return 
1
;
        
return 
fact(n-
1
)*n;
    
}
     
}

 

1
2
3
4
5
6
7
8
9
public 
class 
TestFactorial {
 
    
public 
static 
void 
main(String[] args) {
        
// TODO Auto-generated method stub
        
Factorial factorial=
new 
Factorial();
        
System.out.println(
"factorial(5)="
+factorial.fact(
5
));
    
}
 
}

 代码执行流程图如下:

此程序中n=5就是程序的出口。

转载于:https://www.cnblogs.com/OldZhao/p/5062582.html

你可能感兴趣的文章
BZOJ 1191: [HNOI2006]超级英雄Hero
查看>>
[JLOI2014]天天酷跑
查看>>
P2167 [SDOI2009]Bill的挑战
查看>>
1.10版的Django对应的后台编辑器DjangoUeditor
查看>>
shell命令之---检测磁盘空间
查看>>
蓝桥杯 【基础练习】 十六进制转十进制
查看>>
[Code+#3]寻找车位
查看>>
04java基础
查看>>
10.30 开课一个月零二十六天 (PHP数据库修改)
查看>>
JQuery~1
查看>>
cookie回话技术的应用----------历史记录的实现
查看>>
RabbitMQ 实现RPC
查看>>
access数据库多个left join示例
查看>>
用delphi实现ftp多线程下载源代码(转)
查看>>
Java String类的hashCode()函数
查看>>
编写自己的SpringBoot-starter
查看>>
[2019.3.12]BZOJ1033 [ZJOI2008]杀蚂蚁antbuster
查看>>
vue清空input file
查看>>
OS X 添加环境变量
查看>>
网络互联模型与负载
查看>>