草庐IT

RECURSION

全部标签

java - 斐波那契修改 :How to fix this algorithm?

这个问题摆在我面前,我不知道如何解决。这是关于序列0,1,1,2,5,29,866...(除了前两个数字之外的每个数字都是前两个数字的平方和(2^2+5^2=29))。在第一部分中,我必须编写一个算法(我不是母语人士,所以我真的不知道术语),它会在系列中占有一席之地并返回它的值(6返回29)我是这样写的:publicstaticintmod(intn){if(n==1)return0;if(n==2)return1;elsereturn(int)(Math.pow(mod(n-1),2))+(int)(Math.pow(mod(n-2),2));}但是,现在我需要算法将接收一个数字并返

java - 这个递归循环代码是如何执行的

我有一些代码行我无法理解代码是如何执行的,我的意思是程序流程。代码:1)publicclassRecurLoopTest{2)publicstaticvoidmain(String[]args){3)printit(2);4)}5)privatestaticintprintit(intn){6)if(n>0){7)printit(--n);8)}9)System.out.print(n+",");10)returnn;11)}12)}我认为输出应该是:0,但输出是:0,0,1,我在类里面做了很多次DEBUG,我在调试时看到的流程:从第3行开始执行,即以2作为参数调用printit()。

java - 如何使用递归实现dfs?

我正在尝试使用以下代码通过递归实现DFS,publicstaticvoiddfs(inti,int[][]mat,boolean[]visited){visited[i]=true;//Marknodeas"visited"System.out.print(i+"\t");for(intj=0;j我有一个矩阵和一个数组用于跟踪访问过的节点,//adjacencymatrixforuni-directionalgraphint[][]arr={//12345678910{0,1,1,1,0,0,0,0,0,0},//1{0,0,0,0,0,0,1,0,0,0},//2{0,0,0,0,0

Java:通过给出数字 N 生成 true 和 false 的组合;

我尽可能地简化任务,以便将其应用到我的算法中。这是数学家和程序员面临的挑战:我需要创建一个传递参数intn的方法:publicvoidoptionality_generator(intn){//somekindofloops,orrecursions...tomakeitworkableSystem.out.println("currentcombination:...");}输出应显示所有可能的真假组合。这里是N=1的例子;N=2;N=3;N=4;N=5其中x=false和0=true;请注意,空的分隔线只是为了让您更容易识别模式。希望我包含了所有可能的组合):Combination

java - 在国际象棋编程中很好地使用递归?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。作为家庭作业的一部分,我必须用Java编写一个简单的国际象棋游戏。我想借此机会尝试递归,我想知道国际象棋中是否有明显的递归代码候选人?

java - 算术递归

我正在尝试编写一段代码,为给定的整数n计算以下内容:1/1+1/2+1/3...+1/n这是我到目前为止编写的代码:publicclassRecursiveSum{publicstaticdoubleSumto(intn){if(n==0){return0.0;}elseif(n>0){return1/n+1/Sumto(n-1);}else{thrownewIllegalArgumentException("Pleaseprovidepositiveintegers");}}publicstaticvoidmain(String[]args){System.out.println(S

java - 通过从数组中选择来创建排列

我有一个二维数组,用于存储与您在电话键盘上看到的内容相对应的不同字母。char[][]convert={{},{'A','B','C'},{'D','E','F'},{'G','H','I'},{'J','K','L'},{'M','N','O'},{'P','R','S'},{'T','U','V'},{'W','X','Y'}};如果我想从二维数组的前5行中各取1个字母,找出5个字母单词的所有可能排列,我该怎么做?我正在考虑递归,但这让我感到困惑。为了让这个问题更容易理解,这里有一个例子:一个3字母单词的第一个字母来自第1行,{'A','B','C'},第二个字母来自第3行,{'G

java - 斐波那契数列 - 递归求和

好的,我最初写了一个简单的代码来根据用户输入从系列中返回斐波那契数..n=5会产生3..staticintfibonacci(intn){if(n==1)return0;elseif(n==2)return1;elsereturn(fibonacci(n-1)+fibonacci(n-2));}我正在考虑修改代码以返回系列的总和,而不是仅仅返回系列的值,并且在尝试求和时我不小心将1添加到return语句,令我惊讶的是,它返回了总和正确。下面的代码将在n=5时返回7。我不确定这是否是计算总和的正确方法...如果我加1,我仍然无法弄清楚级数的总和是如何工作的。有人可以解释一下吗??stat

c# - Java中递归和非递归函数的效率比较

据我了解,由于函数调用的开销,递归函数的效率通常低于等效的非递归函数。但是,我最近遇到一本教科书,说这对于Java(和C#)不是必需的。它没有说明原因,但我认为这可能是因为Java编译器以某种方式优化了递归函数。有人知道为什么会这样吗? 最佳答案 教科书可能指的是尾调用优化;有关详细信息,请参阅@Travis的回答。但是,教科书在Java上下文中是不正确的。当前的Java编译器没有实现尾调用优化,显然是因为它会干扰Java安全实现,并且会改变出于各种目的对调用堆栈进行内省(introspection)的应用程序的行为。引用资料:Do

Java 编程 : Dynamic Programming on stairs example

一个人正在跑n步楼梯,一次可以走1步、2步或3步。现在编写一个程序来计算child有多少种可能的跑楼梯方式。给出的代码如下publicstaticintcountDP(intn,int[]map){if(n-1)returnmap[n];else{map[n]=countDP(n-1,map)+countDP(n-2,map)+countDP(n-3,map);returnmap[n];}}我懂C和C++,不懂JAVA。这是来自CrackingtheCoding采访书。谁能解释一下她为什么以及如何在这里使用功能图?这里的map是数组吧?我没有看到任何行将输入保存到map数组,但它如何返