java可以java递归算法例子多少次

Java中的循环和递归的比较;递归是指函数在运行中不断的调用自己的一中现象;用递归实现阶乘是最好不过的了,这样可以有效地缩短;publicclassFactorial{;publicstaticvoidmain(Str;System.out.println(”Plea;Scannerin=newScanner(Sys;intinput=in.nextInt(
Java中的循环和递归的比较
递归是指函数在运行中不断的调用自己的一中现象。递归并不是程序的流程结构,而是一种程序设计的一种思路和实现方式。而且递归不是一种算法,只是实现一种算法的思想。递归可以简化代码的思维强度,缩短代码,因此在很多语言中都有应用。
用递归实现阶乘是最好不过的了,这样可以有效地缩短代码。下面的代码就是用递归实现。 import java.util.*;
public class Factorial {
public static void main(String[] args){
System.out.println(”Please enter a number…”);
Scanner in=new Scanner(System.in);
int input=in.nextInt();
factorial(input);
System.out.print(factorials);
private static void factorial(int n){
factorials*=n;
factorial(n);
private static int factorials=1;
可以看到,factorial()方法中有一行factorial(n),这个函数会不断地调用自己。这是可怕的,无穷的计算将会导致系统停止响应甚至崩溃,因此在一开始就要加入判断条件以避免这样的现象发生。
递归并不像循环一样在一门语言中处于非常重要的位置,实际用到递归的地方也很少。一般的,递归都可以转化成相应的循环结构,所以递归不是程序语言中必备的,它是有替代品的。因此在有些语言中并不支持函数的自身调用,也就无法实现递归。另外递归的算法要比循环结构难懂,不易于阅读。而且普遍认为循环的效率要比递归高,可靠性也更好。
下面的代码就是用循环来实现阶乘的,效果都是一样的。
import java.util.*;
public class Factorial {
public static void main(String[] args){
System.out.println(”Please enter a number…”);
Scanner in=new Scanner(System.in);
int input=in.nextInt();
factorial(input);
System.out.print(factorials);
private static void factorial(int n){
while(n&0){
factorials*=n;
private static int factorials=1;
Java虽然支持递归,但是要慎用。一旦算法有问题,就很容易造成程序停止响应,而且检查起来也不如循环来的容易。
三亿文库包含各类专业文献、行业资料、各类资格考试、应用写作文书、专业论文、java中的循环和递归的比较75等内容。 
 Java程序经常用到“递归”,“递归”的基本思想是 ( ) A.“让别人反复调用自己”B.“自己反复调用别人”C.“自己反复调用自己”...  同问java 中递归算法是什么怎么算的? /** * 概念介绍: * 递归是一种方法(...{//递归方法,循环调用 if (n == 1) { return 1; } else { return (n...  java中for循环的几个运用_计算机软件及应用_IT/计算机_专业资料。java中for循环...具体保存到数据里, 还是拼成一个串,随便, 之后进行两个两个比较,保留大的,...  Java中for循环的几种写法_计算机软件及应用_IT/计算机_专业资料。java中for循环语句的几种写法的详实介绍!Java 中 for 循环的几种写法 JDK 1.5 提供了另一种...  Java循环练习级答案_IT认证_资格考试/认证_教育专区。1、100 以内所有偶数的和...进行比较,如果 num==n 提示”找到 了”并跳出循环,如果 num&n 提示”小了...  则我们先挪动上面 n-1 块 disk,等上面 挪完,即递归返回的时候,我们挪动最...Java数据结构--递归 20页 1下载券 java中的循环和递归的比... 3页 1下载券...  Java 中的经典递归 //汉诺塔问题(递归) (古代有一个梵塔,塔内有三个座 A、...循环直到(w[i]&C); 4.1 x[i]=1; 4.2 C=C-w[i]; 4.3 i++; 5. ...  java中的foreach循环和for循环_计算机软件及应用_IT/计算机_专业资料。用 for 和 foreach 分别遍历数组或者是集合 如: String[] strs=new String[]{“a”,”b...  Java经典练习题-循环_语文_高中教育_教育专区 暂无评价|0人阅读|0次下载|举报文档 Java经典练习题-循环_语文_高中教育_教育专区。...java结合数据实现递归 - ITeye问答
news_types

& id
& parentid
& message

最终输入结果
显示出级别
问题补充:chen_yongkai 写道神马情况?
问题描述好简约!引用最终输入结果
显示出级别
就是级别查询
问题补充:liuqing_2010_07 写道oracle中这么玩
select id ,parentid,message from news_types
start with id = 1
connect by prior id = parentid
可以在表名后面加过滤条件。
oracle的我知道,我要的是mysql的
问题补充:kidding87 写道这个结构明显就不好使嘛
一般是这个结构
class Strut{
private String id;
private Strut parent;
private String message;
public int getLevel(Strut s){
int level = 0;
while((s=s.getParent())!=null){
是操作数据库的,不是但存的输入
问题补充:谁知道mysql递归语句,比如我通过id=1去查询,1的所有子节点,谢谢了
问题补充:kidding87 写道楼主你明明写的是java嘛。。。
sql什么的存储过程这个写的很清楚
[url]
http://blog.csdn.net/ACMAIN_CHM/article/details/4142971
[/url]
两个都可以的,实现了就行,我不要存储过程。
问题补充:kidding87 写道ok 上java代码
这个Connection我没有写,你就按照你们项目的来
public int getLevelById(String id) throws SQLException{
Connection conn = DriverManager.getConnection("");
PreparedStatement st =
ResultSet rs =
int level = 1;
String parentid =
st = conn.prepareStatement("select parentid from news_types where id = ?");
st.setString(1,id);
rs = st.executeQuery();
if(rs.next()){
parentid = rs.getString(1);
rs.close();
st.setString(1, parentid);
}while(parentid!=null);
你这个是查询的级别?不好意思,我没有说清楚,我要查询的是子节点的id,不是查询他一共有多少级别
catch (Exception e) {
conn.close();
问题补充:kidding87 写道根据id来查询 节点下面的所有id么,还有要求是什么格式的?
就是导航,显示级别的,最上面的级别最大,因为这个是是个新闻类别表嘛!和新闻表关联,我要查询最顶级新闻类的新闻,也可以看见子节点下面的新闻,就是这样
问题补充:kidding87 写道我明白你的意思了,自己写的话,通过id抓取一整个树的话可以是可以,而且比较麻烦,没有延迟加载这个很耗费内存,建议使用hibernate,通过它的级联关系来获取整个树,不用写什么代码,做些配置文件就可以了
我这个项目搭建的么有hibernate啊!那样我弄起来就更麻烦了。
采纳的答案
写了这么多才3分。。。哎,真是不容易啊
这个是基于广度遍历优先的算法,News_type 为一个树
下面是怎么构造出树和怎么去遍历树
public class DG
public static void main(String args[]) throws SQLException
News_type n = getNewsTreeById("8a65adf12e504bfc0008");
static void show(News_type n){
if(n.getSons().size()==0){
System.out.println(n.getId());
for(News_type n1 :n.getSons())
public static News_type getNewsTreeById(String id) throws SQLException{
Connection conn = DBhelper.getConnection();
PreparedStatement st =
ResultSet rs =
News_type news_tree=new News_type();
news_tree.setSons(new HashSet&News_type&());
st = conn.prepareStatement("select * from TB_SYS_RESOURCES where parentid = ?");
st.setString(1, id);
rs = st.executeQuery();
while(rs.next()){
News_type news = new News_type(rs.getString(1),new HashSet&News_type&() ,rs.getString(3));
news_tree.getSons().add(news);
rs.close();
getTree(st, news_tree);
catch (Exception e) {
conn.close();
return news_
private static void getTree(PreparedStatement st, News_type news_tree)
throws SQLException
for(News_type n :news_tree.getSons()){
st.setString(1, n.getId());
rs = st.executeQuery();
while(rs.next()){
News_type news = new News_type(rs.getString(1),new HashSet&News_type&() ,rs.getString(3));
n.getSons().add(news);
rs.close();
for(News_type n :news_tree.getSons()){
getTree(st, n);
class News_type{
public News_type(){}
public News_type(String id, Set&News_type& sons,
String message)
this.sons =
this.message =
private Set&News_type&
public String getId()
public void setId(String id)
public Set&News_type& getSons()
public void setSons(Set&News_type& sons)
this.sons =
public String getMessage()
public void setMessage(String message)
this.message =
int hashCode(){
return this.id.hashCode();
public boolean equals(Object obj)
if(obj instanceof News_type){
News_type cast = (News_type)
if(cast.getId().equals(cast.getId()))
我明白你的意思了,自己写的话,通过id抓取一整个树的话可以是可以,而且比较麻烦,没有延迟加载这个很耗费内存,建议使用hibernate,通过它的级联关系来获取整个树,不用写什么代码,做些配置文件就可以了
根据id来查询 节点下面的所有id么,还有要求是什么格式的?
ok 上java代码
这个Connection我没有写,你就按照你们项目的来
public int getLevelById(String id) throws SQLException{
Connection conn = DriverManager.getConnection("");
PreparedStatement st =
ResultSet rs =
int level = 1;
String parentid =
st = conn.prepareStatement("select parentid from news_types where id = ?");
st.setString(1,id);
rs = st.executeQuery();
if(rs.next()){
parentid = rs.getString(1);
rs.close();
st.setString(1, parentid);
}while(parentid!=null);
catch (Exception e) {
conn.close();
楼主你明明写的是java嘛。。。
sql什么的存储过程这个写的很清楚
[url]
http://blog.csdn.net/ACMAIN_CHM/article/details/4142971
[/url]
这个结构明显就不好使嘛
一般是这个结构
class Strut{
private String id;
private Strut parent;
private String message;
public int getLevel(Strut s){
int level = 0;
while((s=s.getParent())!=null){
oracle中这么玩
select id ,parentid,message from news_types
start with id = 1
connect by prior id = parentid
可以在表名后面加过滤条件。
神马情况?
问题描述好简约!引用最终输入结果
显示出级别
已解决问题
未解决问题JAVA用递归方法求n个数的无重复全排列_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
JAVA用递归方法求n个数的无重复全排列
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢daxia521 的BLOG
用户名:daxia521
访问量:61
注册日期:
阅读量:5863
阅读量:12276
阅读量:408598
阅读量:1096809
51CTO推荐博文
所谓递归,就是自己间接或者直接地自己。递归需注意的三个条件:1、边界条件2、递归前进段3、递归返回段当边界条件不满足时,则递归前进当边界条件满足时,则递归返回这有个小例子:public class Demo&{public static void main(String args[]){toBin(6);}public static void toBin(int num){if(num&0){toBin(num/2);System.out.println(num%2);}}}第一步进入main函数调用toBin函数,6&0,执行toBin(3),3&0,执行toBin(1),1&0,执行toBin(0),这个地方边界条件已不满足,因此执行满足条件的最后一个被调用的toBin(1)中的打印语句,结果是1,toBin(1)函数结束后,返回到调用此函数的toBin(3),结果是1,此函数结束后,再返回到调用此函数的toBin(6),结果是0,最后答案是1,1,0本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:未分类┆阅读(0)┆评论(0)

我要回帖

更多关于 java递归删除文件夹 的文章

 

随机推荐