当前位置: 首页 > 知识库问答 >
问题:

Java:递归方法接受整数“n”并打印“n”个字符

万俟经纶
2023-03-14

家庭作业:寻找更好的策略或方法,而不是完整的代码。

当我试图确定这个问题的递归情况时,我完全被弄糊涂了。我必须编写一个接受整数参数“n”的方法,然后输出总共“n”个字符。根据原始整数是奇数还是偶数,中间字符应始终为“”或“*”。下面是两个不同的方法调用和输出应该是什么样子:

writeChars(1) -> *
writeChars(2) -> **
writeChars(3) -> <*>
writeChars(4) -> <**>
writeChars(5) -> <<*>>
writeChars(6) -> <<**>>
writeChars(7) -> <<<*>>>
writeChars(8) -> <<<**>>>

我该如何识别递归案例呢?

共有3个答案

薛保臣
2023-03-14

我可能会把这个问题分成3部分。打印<代码>

在此基础上,我们可以创建一个递归解决方案来打印每个组件。的数量

public class SO15049082 {

    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            print(i);
        }
    }

    private static void print(int i) {
        if (i > 0) {
            System.out.print("writeChars(" + i + ") --> ");
            int c = i % 2 == 1 ? i / 2 : (i - 2) / 2;
            printleft(c);
            printstar(c % 2);
            printright(c);
        }
        System.out.println();
    }

    private static void printright(int i) {
        if (i > 0) {
            System.out.print(">");
            printright(i - 1);
        }
    }

    private static void printstar(int i) {
        if (i == 1) {
            System.out.print("*");
        } else {
            System.out.print("**");
        }
    }

    private static void printleft(int i) {
        if (i > 0) {
            System.out.print("<");
            printleft(i - 1);
        }
    }

}

乜明朗
2023-03-14

要识别递归,首先考虑如何解决给定值n的问题,假设您有一个方法可以解决较小情况下的问题。尺寸n的解决方案与尺寸n-1的解决方案有何关联?

这样做之后,你会发现一个或多个你无法解决的小案例。那些是你的基本案例。

最后,编写一个直接处理每个基本情况的方法。对于大于基本情况的n,它调用自己的n-1,然后修改该结果以获得大小n的解。

吕霄
2023-03-14

您有两个基本情况:n==1和n==2。除此之外,递归规则是发出“

 类似资料:
  • 问题内容: 我正在尝试计算素数,已经完成了。但是我只想计算和打印第n个质数(用户输入),而计算其余的(不会打印),只会打印第n个质数。 到目前为止,这是我写的内容: 这是我编写的用于计算从1到n的质数的程序。但是,我希望它仅显示第n个质数, 我想做的是每次进行int计数并对其进行 处理,当count == n时,它会打印出该数字,但是我不太清楚如何降落。 问题答案: 为了计算第n个素数,我知道两个

  • 问题内容: 我试图写一个递归函数,从打印到,但我不知道该怎么做。我不小心做了一个从到的打印: 我不知道这是否有帮助,也许我可以更改代码中的内容以使其从变为? 问题答案: 你差点知道了!这是一个固定的简化版本: 注意: 您不必从仅打印值的递归函数返回任何内容 对于升序打印时,声明必须放在 后 递归调用 如果仅打印,则递归退出,因为我们只在打印,此后无需执行任何操作即可返回(Python的默认返回值)

  • 问题描述 (Problem Description) 如何打印数字总和? 解决方案 (Solution) 下面的示例演示了如何使用堆栈的概念添加前n个自然数。 import java.io.IOException; public class AdditionStack { static int num; static int ans; static Stack theStack;

  • 我想找出一种方法,从整数中找出整数的最大和。 在这种情况下,输入总是整数的数组,任务是使用数字(每个数字只能使用一次)计算最大可能的和。 以下是我到目前为止提出的方法,但我不知道如何用一种方法来完成这一切。 有了这个输入:程序应该打印出。

  • 编辑问题以包括所需的行为、特定问题或错误,以及再现问题所需的最短代码。这将帮助其他人回答这个问题。 我无法解决此任务: 编写一个递归函数,输入一个正整数n并输出所有n!{1,2,…,n}的置换。不要使用任何Sage的排列命令。使用列表存储值并使用该列表。 示例输入: 预期输出: 我在网上找到的所有东西都会生成列表的排列,而不是整数。 我想计算阶乘将有助于确定输出长度。我不知道该怎么做。请帮帮我!非

  • 我想按以下顺序打印子字符串:-“”,“D”,“C”,“CD”,“B”,“BD”,“BC”,“BCD”,“A”,“AD”,“AC”,“ACD”,“AB”,“ABD”,“ABC”,“ABCD” 在这里,最后4个阵型的“a”不见了