java之递归算法
来源:互联网 发布:苹果5s用不了4g网络 编辑:程序博客网 时间:2024/06/07 03:36
- 在一个类当中有两个或者更多的方法,一个方法可以调其他方法,例如:
public static void test01(){ System.out.println("test01"); test02(); } public static void test02(){ System.out.println("test02"); } public static void main(String[] args) { test01(); }
输出结果:
test01 test02
这个很明显,当然,如果方法很多,test01还可以调用test03,test04….等,但是,test01能不能调它自己呢?
public static void test01(){ System.out.println("test01"); test01(); } public static void main(String[] args) { test01(); }
输出结果:报栈溢出错误,原因分析:在test01()一直在反复调自己,最终导致栈溢出。
test01test01test01test01Exception in thread "main" java.lang.StackOverflowError
- 递归算法
递归的基本思想“自己调自己”。
递归结构包括两方面:1.递归头:解答什么时候不调自己,如果没有递归头则会陷入死循环。2,递归体:解答什么时候调自己。
在上例中,就是由于没有递归头,最终导致栈溢出。
对上例进行修改,
static int i=0; public static void test01(){ i++; System.out.println("test01"); if(i<5){ //递归体 test01(); }else{ //递归头 System.out.println("执行结束"); } } public static void main(String[] args) { test01(); }
执行结果:
test01test01test01test01test01执行结束
练习:使用递归算法,求一个数的阶乘;
public static long factorial(int i){ if(i==1){ //递归头 return 1; }else{ //递归体 return i*factorial(i-1); } }
阅读全文
0 0
- java之递归算法
- Java算法之递归算法
- java 之树型递归算法
- 黑马程序员之Java--递归算法练习
- java数据结构与算法分析之递归
- java算法:递归算法
- 【Java工程师之路】[1-1.5]Java递归算法
- oralce之递归算法
- 单链表之递归算法
- 算法之递归(一)
- 算法 修炼 之递归
- 算法之递归
- 递归算法之置换
- 算法之递归练习
- 算法之递归思想
- 汉诺塔之递归算法
- 数据结构之递归算法
- 酒干倘卖无之递归算法
- 如何实现模拟人类视觉注意力的循环神经网络?
- 编码器使用教程与测速原理之硬件方面(一)
- iOS手势解锁和指纹解锁
- 跳台阶
- 文本情感分类
- java之递归算法
- 线性循环链表
- Tomcat处理乱码问题终极版
- Leetcode——26. Remove Duplicates from Sorted Array
- dede二次开发织梦
- 随时更新的日记
- Ubuntu 安装与测试 Caffe & 遇到的问题及解决方案
- Java问题记录
- 配置eclipse使能打开当前文件所在目录