Java For将循环转换为递归函数 的公共类{ 公共静态void main(字符串[]args){ 对于(int i=2;i
取Java For将循环转换为递归函数 的公共类{ 公共静态void main(字符串[]args){ 对于(int i=2;i,java,recursion,for-loop,while-loop,Java,Recursion,For Loop,While Loop,取main的循环,并将其放在自己的函数中,带有一个参数int i。在该函数中,将循环重写为 如果循环条件为false(i>=1024),则返回 否则,使用参数i*2进行递归调用 使用参数1或2调用函数,具体取决于您要重写的程序(它们不完全匹配)。类似于: public class For { public static void main(String[] args){ for(int i=2; i<=1024; i *= 2){ System.
main
的循环,并将其放在自己的函数中,带有一个参数int i
。在该函数中,将循环重写为
i>=1024
),则返回
i*2
进行递归调用1
或2
调用函数,具体取决于您要重写的程序(它们不完全匹配)。类似于:
public class For {
public static void main(String[] args){
for(int i=2; i<=1024; i *= 2){
System.out.println("Count is: " + i);
}
}
public class While {
public static void main(String[] args){
int i = 1;
while (i < 1024) {
i *= 2;
System.out.println("Count is: " + i);
}
}
public class DoWhile {
public static void main(String[] args){
int i = 1;
if (i < 1024) {
do { i*=2;
System.out.println("Count is: " + i);
} while (i < 1024);
}
}
公共类递归{
公共图书馆(int i){
如果(i<1024){
i*=2;
System.out.println(“计数为:+i”);
r(i);
}
}
公共静态void main(字符串[]args){
递归r=新的递归();
r、 r(1);
}
}
循环循环可以如下所示:
public class Recursive {
public void r(int i) {
if (i < 1024) {
i *= 2;
System.out.println("Count is: " + i);
r(i);
}
}
public static void main(String[] args) {
Recursive r = new Recursive();
r.r(1);
}
}
主类
{
公共静态void main(字符串[]args){
雷克韦尔(1);
}
公共静态无效记录(int i){
如果(i<1024){
i=i*2;
System.out.println(“计数为:+i”);
(i);
}
}
}
公共类测试1{
class Main
{
public static void main(String[] args){
RecWhile(1);
}
public static void RecWhile(int i) {
if (i < 1024) {
i = i*2;
System.out.println("Count is: " + i);
RecWhile(i);
}
}
}
}如果是作业,请也将其标记为作业如果这是作业,请通过添加作业标签来表明这一点。-1表示没有帮助。让学生解决手头的问题是有帮助的,而将解决方案放在银盘上给他们不是,嗯,为什么Manpret Pangli会在意听他的教授讲课,因为这样做太便宜了从SO那里得到答案?它产生的结果与OPs问题中的示例不同。您的程序从1开始打印。2的乘法应该在打印之前完成。@Ingo:我不知道这是家庭作业。没有家庭作业标签。我认为-1答案不公平,不是因为它们不正确,而是因为它们被赋予了“家庭作业问题”@Ingo:很难反驳你的观点,尽管这有点主观臆断!是的,@David,我关心下一代程序员,即使他们来自印度。如果人们能够逃避思考,我无法忍受。这个答案被标记为-1,不是因为它不正确,而是因为它是针对一个不受欢迎的问题摆姿势回答这个问题(当然,这不是我的观点;但这是堆栈溢出的方式)不,那是我,不是这样。如果你不明白这只能是作业,我也无能为力。
public static void main(String[] args) {
Test1 mainFunc = new Test1();
int[] arr = {1,2,4,3,5,6};
int start=0;
int end=arr.length;
mainFunc.callRecursiveFun(start, end, arr);
}
public int callRecursiveFun(int start, int end, int[] arr) {
int arrLen = end;
if(arrLen == 0) {
return 0;
} else {
System.out.println("Loop Index at "+start +": "+arr[start]);
}
return callRecursiveFun(start+1, end-1, arr);
}