蓝屏代码查询及代码分析
2009-04-25 09:24
169 查看
写了一个验证谷角猜想的小程序,本来是用循环方法写的,交给老师之后,让我改成递归方法。
我一想,不就是把核心函数拷过来,把while改成return方法自身就行了嘛。。。
结果运行出错。。。
看了看算法书,专门研究了递归之后,才发现,原来是没有出口啊!
所谓没有出口,也就是指,递归函数必须要满足一个要求,就是,必须有一个非递归定义的初始值,诸位千万别小看这一点,也许你看我现在的代码,感觉到非常容易,但是当真的去思考的时候,才发现敲代码时,如果没有专门朝着一方面考虑,很难考虑到这一点。
原核心函数(循环方法当中的):
if(n%2==0)
{
System.out.print("上次偶数:");
n=n/2;
if(n==1)
{
System.out.println("最终结果为:");
}
System.out.print(n+" ");
}
else
{
System.out.print("上次奇数:");
n=n*3+1;
if(n==1)
{
System.out.println("最终结果为:");
}
System.out.print(n+" ");
}
改进后的核心函数递归方法当中的:
if(n%2==0)
{
System.out.print("上次偶数:");
n=n/2;
if(n==1)
{
System.out.println("最终结果为:");
System.out.print(n+" ");
return 1;
}
System.out.print(n+" ");
return diguiProc(n);
}
else
{
System.out.print("上次奇数:");
n=n*3+1;
if(n==1)
{
System.out.println("最终结果为:");
System.out.print(n+" ");
return 1;
}
System.out.print(n+" ");
return diguiProc(n);
}
另外补充一点,书上说的,递归方法的使用对象一定具有递归性在数学上是指:一定能够用一个数学表达式表示出递归关系
递归三特点:1、每个递归函数都必须有一个非递归定义的初始值,作为递归结束的标志,或递归结束的出口;2、问题具有递归性;3、递归方法的时间和空间复杂度都比较高
我一想,不就是把核心函数拷过来,把while改成return方法自身就行了嘛。。。
结果运行出错。。。
看了看算法书,专门研究了递归之后,才发现,原来是没有出口啊!
所谓没有出口,也就是指,递归函数必须要满足一个要求,就是,必须有一个非递归定义的初始值,诸位千万别小看这一点,也许你看我现在的代码,感觉到非常容易,但是当真的去思考的时候,才发现敲代码时,如果没有专门朝着一方面考虑,很难考虑到这一点。
原核心函数(循环方法当中的):
if(n%2==0)
{
System.out.print("上次偶数:");
n=n/2;
if(n==1)
{
System.out.println("最终结果为:");
}
System.out.print(n+" ");
}
else
{
System.out.print("上次奇数:");
n=n*3+1;
if(n==1)
{
System.out.println("最终结果为:");
}
System.out.print(n+" ");
}
改进后的核心函数递归方法当中的:
if(n%2==0)
{
System.out.print("上次偶数:");
n=n/2;
if(n==1)
{
System.out.println("最终结果为:");
System.out.print(n+" ");
return 1;
}
System.out.print(n+" ");
return diguiProc(n);
}
else
{
System.out.print("上次奇数:");
n=n*3+1;
if(n==1)
{
System.out.println("最终结果为:");
System.out.print(n+" ");
return 1;
}
System.out.print(n+" ");
return diguiProc(n);
}
另外补充一点,书上说的,递归方法的使用对象一定具有递归性在数学上是指:一定能够用一个数学表达式表示出递归关系
递归三特点:1、每个递归函数都必须有一个非递归定义的初始值,作为递归结束的标志,或递归结束的出口;2、问题具有递归性;3、递归方法的时间和空间复杂度都比较高
相关文章推荐
- 【XP蓝屏代码查询表】
- 蓝屏代码大全查询
- Informix数据表结构分析资料整理之约束查询代码
- 【XP蓝屏代码查询表】
- Informix数据表结构分析资料整理之约束查询代码
- 蓝屏含义原理分析处理方法代码电脑计算机故障系统安全 - 蓝屏知识大全
- Informix数据表结构分析资料整理之约束查询代码
- 代码分析错误查询SQL
- python自动化工具日志查询分析脚本代码实现
- PostgreSQL代码分析,查询优化部分,pull_ands()和pull_ors()
- sql代码书写规范 及子查询分析
- PostgreSQL代码分析,查询优化部分,canonicalize_qual
- XP 蓝屏报错代码查询
- PostgreSQL代码分析,查询优化部分,process_duplicate_ors
- 蓝屏代码分析
- Windows2000 蓝屏错误代码查询
- Python数据分析之如何利用pandas查询数据示例代码
- Informix数据表结构分析资料整理之约束查询代码
- 常见蓝屏代码及蓝屏案例分析
- python自动化工具日志查询分析脚本代码实现