Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用三种预先给定的方法反向打印字符串?_Java_String_Recursion_Methods - Fatal编程技术网

Java 使用三种预先给定的方法反向打印字符串?

Java 使用三种预先给定的方法反向打印字符串?,java,string,recursion,methods,Java,String,Recursion,Methods,我需要编写一个printBackwards()方法,使用三个预先给定的方法first、rest和lengthprintBackwards()方法需要将字符串作为参数,并在控制台上打印该字符串的每个字母,但每个字母都需要以相反的顺序打印在新行上。因此,如果字符串为House,则输出应为: e s u o H 在本练习中,我们应该使用递归和if-else语句。没有数组,没有其他(熟悉的)字符串方法,没有while和for循环 我做了一点,我知道这是不正确的,但这就是我努力做到的。我不知道如何编写代码

我需要编写一个
printBackwards()
方法,使用三个预先给定的方法
first
rest
length
printBackwards()
方法需要将字符串作为参数,并在控制台上打印该字符串的每个字母,但每个字母都需要以相反的顺序打印在新行上。因此,如果字符串为
House
,则输出应为:

e
s
u
o
H

在本练习中,我们应该使用递归和if-else语句。没有数组,没有其他(熟悉的)字符串方法,没有while和for循环

我做了一点,我知道这是不正确的,但这就是我努力做到的。我不知道如何编写代码,因此该方法可以在字母
e
之前返回字母。这里如何使用递归


因为这是一个家庭作业问题,我会尽可能多地留给你,这样你就可以学习了

考虑以下两个事实:

  • 打印完其余字符后,必须打印第一个字符
  • 如果字符串为空,则不打印任何内容
  • 使用这两个事实就足以构建递归方法

    第2点。是终止条件。最好先对此进行编码。
    第1点。是主方法体,在其中使用递归打印其余部分

    一旦有了终止条件和递归结构(通常是预序或后序操作),就可以构建递归方法

    还要注意方法的名称printBackwards()(而不是Backwards())。即,该方法进行打印;它不会向后返回字符串

    因此,将上述内容转换为伪代码(在本例中实际上就是伪代码):

  • 如果字符串为空,则不执行任何操作
  • 用字符串的其余部分调用self
  • 打印第一个字符

  • 因为这是一个家庭作业问题,我会尽可能多地留给你,这样你就可以学习了

    考虑以下两个事实:

  • 打印完其余字符后,必须打印第一个字符
  • 如果字符串为空,则不打印任何内容
  • 使用这两个事实就足以构建递归方法

    第2点。是终止条件。最好先对此进行编码。
    第1点。是主方法体,在其中使用递归打印其余部分

    一旦有了终止条件和递归结构(通常是预序或后序操作),就可以构建递归方法

    还要注意方法的名称printBackwards()(而不是Backwards())。即,该方法进行打印;它不会向后返回字符串

    因此,将上述内容转换为伪代码(在本例中实际上就是伪代码):

  • 如果字符串为空,则不执行任何操作
  • 用字符串的其余部分调用self
  • 打印第一个字符

  • 首先,您需要在
    printfackwards
    函数中打印输出,因此main如下所示:

    public static void main(String args[])
    {
        printBackwards("House");
    }
    
    System.out.println(first(s));
    
    第二,是递归的工作方式。如果你想让它按升序执行,你应该在self函数调用之前做一些事情。否则,在执行顺序降序的情况下,代码应该在自调用函数之后执行。这些是递归函数的基本原理

    在这种情况下,让我们尝试构建答案。
    首先,我们需要处理停止条件,它应该总是写在自调用函数之前。最好也是最常见的停止条件是到达某个内容的结尾,在这种情况下,当我们得到一个空字符串时,在所有其他情况下,我们需要调用self函数,只需稍作更改,在这种情况下,它将向函数提供字符串的其余部分:

    if ( !length(s) )
    {
        //stop the recursion
        return;
    }
    else 
    {
        printBackwards(rest(s));
    }
    
    当您到达停止递归语句时,从这一点开始,它将关闭所有打开的自函数执行,因此将返回。
    这是我们需要实现的完美状态,向后打印字母,因为在
    printfackwards
    执行的每个状态下,我们都将字符串从左侧字母中切掉一点,这意味着第一个字母就是我们需要的。
    例如,在字符串
    House
    的情况下,
    printBackwards
    函数的最后一次调用将在
    s
    变量将保持
    e
    值时进行,因为当我们达到停止条件时,它是从被切断到空字符串的一个分支。在本例中,我们希望将其打印出来,但在此之前的self调用中,
    s
    变量将保存值
    se
    ,因为这是剪切第一个字母之前的一步。所以,我们不想打印整个值,只想打印它的第一个字母,如下所示:

    public static void main(String args[])
    {
        printBackwards("House");
    }
    
    System.out.println(first(s));
    
    将所有内容结合在一起,将导致以下实施:

    public static String printBackwards(String s)
    {
        if ( !length(s) )
        {
            //stop the recursion
            return;
        }
        else 
        {
            printBackwards(rest(s));
            System.out.println(first(s));
        }
    }
    
    希望,我解释清楚了


    祝你好运

    首先,您需要在
    printBackwards
    函数中打印输出,因此主界面如下所示:

    public static void main(String args[])
    {
        printBackwards("House");
    }
    
    System.out.println(first(s));
    
    第二,是递归的工作方式。如果你想让它按升序执行,你应该在self函数调用之前做一些事情。否则,在执行顺序降序的情况下,代码应该在自调用函数之后执行。这些是递归函数的基本原理

    在这种情况下,让我们尝试构建答案。
    首先,我们需要处理停止条件,它应该总是写在自调用函数之前。最好也是最常见的停止条件是到达某个东西的结尾,在这种情况下是当我们得到一个空字符串时,在所有其他情况下,我们需要调用self函数,只需稍作更改,