首页 / JAVA / java – 递归和递归方法
java – 递归和递归方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 递归和递归方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1771字,纯文字阅读大概需要3分钟。
内容图文
![java – 递归和递归方法](/upload/InfoBanner/zyjiaocheng/764/62add329f025463dacf6f6235c01c0c4.jpg)
我正在攻读我的计算机科学决赛,并且回过头来看看我在课堂上讨论过的一些我从未理解过的事情.主要是递归.我想我已经掌握了简单的递归示例,但我正在尝试通过以前的考试,并且无法弄清楚应该如何完成.
这是一个问题:
Texas numbers (Tx(n)) are defined as follows for non-negative numbers (assume true):
Tx(n) = 10 if n is 0
Tx(n) = 5 if n is 1
Tx(n) = 2*(Tx(n-1) + Tx(n-2) if n >= 2
然后我们在测试后进行一些修正之后编写德克萨斯数字的递归函数,这是我想出来的,我认为这是对的,但不是100%肯定.
public int Tx(int n) {
if(n == 0)
return 10;
else if (n == 1)
return 5;
else
return 2*(Tx(n-1) + Tx(n-2));
}
然后我们被要求计算Tx(5)的值.这就是我被困住的地方.如果else的return语句只是n-1,我想我能算出来,但n-1 n-2完全让我失望.
任何人都可以解释这将如何工作,或分享一些具有类似示例的链接.我试过在网上和我的教科书中试过这个,但是我发现的例子要么是先进的,我不知道发生了什么,或者他们只处理像返回n-1这样的东西,我已经知道怎么做.
解决方法:
让我们从Tx(2)开始. n>因此,我们得到2 *(Tx(n-1)Tx(n-2)),它是2 *(Tx(1)Tx(0)).
但我们已经知道Tx(1)和Tx(0)了!所以只需替换它们就可以得到2 *(5 10) – > 30.很好,所以现在我们知道T(2).
T(3)怎么样? 2 *(Tx(2)Tx(1)).很好,我们已经知道了这些:)再次,只需填写它们即可获得2 *(30 5) – > 70.
你可以前进到Tx(5).
您的代码在逻辑上是正确的,您应该使用==来测试相等性,单个=用于赋值.
当您运行方法时,它将向后工作并解决越来越小的子问题,直到它到达已知答案的点,这些是您的基本情况.
Tx(3)
2* Tx(2) + Tx(1)
2*Tx(1) + Tx(0) (5)
(5) (10)
为了使递归起作用,无论你每次做什么来将问题分解成更小的问题,都需要在基本情况下取得一些进展.如果没有,您将无限递归,直到您的计算机空间不足以存储对同一功能的所有重复调用.
public int Tx(int n) {
if(n == 0)
return 10;
else
return Tx(n+1); // n will never reach 0!
}
Tx(1)变为Tx(2) – > Tx(3) – > Tx(4) – > Tx(5)等
内容总结
以上是互联网集市为您收集整理的java – 递归和递归方法全部内容,希望文章能够帮你解决java – 递归和递归方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。