关于Java中的递归操作--(以将一个正整型十进制数转换为二进制数为例)
2012-01-30 21:13
239 查看
递归操作是函数一直在调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
递归调用的条件:
1、递归调用一定发生在函数上;
2、递归调用一个有结束条件,程序每执行一次都会去修改这个结束条件。
例:将一个正整型十进制数转换为二进制数:方法是十进制数字除以2取余数,接着倒着取。
方法一:常规做法(用循环来做):
1:递归操作利用不当会导致内存溢出;
2:递归操作并不是一次两次就能够完全搞懂的,要多写多练才能掌握的更加牢靠;
3:递归操作并不是我们的唯一选择,因为大多数的递归操作都能用循环来完成,只是利用循环的时候代码结构不是很好。
以上都是本人的一点小经验,仅供大家参考。
递归调用的条件:
1、递归调用一定发生在函数上;
2、递归调用一个有结束条件,程序每执行一次都会去修改这个结束条件。
例:将一个正整型十进制数转换为二进制数:方法是十进制数字除以2取余数,接着倒着取。
方法一:常规做法(用循环来做):
public class Conversion { public static void main(String args[]){ int num =11;//假设正十进制整数为11 String Str ="";//保存转换的结果 while(num !=0){//表示还有数字,还可以继续执行 Str =(num % 2) + Str;//保存结果 num =num/2;//改变num 内容 } System.out.println(Str);//输出二进制数 } }方法二:递归做法:
public class Conversion { public static void main(String args[]){ toBinary(11);//在主函数中调用toBinary函数,很简化主函数的代码量 } public static void toBinary(int num){ if(num/2==0){//此时已经计算到了结束 System.out.print(num%2); } else{ toBinary(num/2);//向下继续计算 System.out.print(num%2); } } }递归操作和常规函数操作相比可以简化代码,让代码结构更加明了,但是递归操作也有一定的弊端:
1:递归操作利用不当会导致内存溢出;
2:递归操作并不是一次两次就能够完全搞懂的,要多写多练才能掌握的更加牢靠;
3:递归操作并不是我们的唯一选择,因为大多数的递归操作都能用循环来完成,只是利用循环的时候代码结构不是很好。
以上都是本人的一点小经验,仅供大家参考。
相关文章推荐
- Java中输入一个十进制数,如何转换为二进制数
- 关于用递归将十进制数转换为二进制数
- java 输入一个二进制数,把它转换为十进制数并输出
- 关于字符串操作的一个小例子(递归实现)
- 【Java面试题】17 如何把一个逗号分隔的字符串转换为数组? 关于String类中split方法的使用,超级详细!!!
- 在JDBC操作中关于java.util.Date跟java.sql.Date之间的转换问题
- 输入一个十进制数,利用栈操作,将该数转换成n进制数。
- 将一个十进制数转换成二进制输出--递归实现
- 输入一个十进制数N,将它转换成R进制数输出(运用递归实现)
- 每天一个小程序——十进制数转换为二进制数!
- 用c语言实现输入一个十进制数,计算其转换为二进制数后其中包含1的个数
- JAVA学习中,一个关于Object对象转换时对应方法的问题
- solr中一个问题——顺便讨论java中关于中包括main函数以及涉及资源(变量)操作中的类
- 一个关于64位进制转换的java实现
- 第一周第二天([变量名] [运算符] [语句] [求水仙花数的算法][求一个十进制数转换成二进制数有多少个1的算法] [continue的用法])
- 求一个十进制数转换为二进制数时包含1的个数
- 关于一个Java时间函数的转换方法
- 给定一个十进制数,转换为对应的二进制数
- 用递归和非递归的方法把一个十进制数转换为二进制序列
- 第二周任务1:输入一个十进制数转换成二进制数 方法2