gpt4 book ai didi

使用递归计算 n 高度的 Java 三角形

转载 作者:行者123 更新时间:2023-12-01 12:12:48 24 4
gpt4 key购买 nike

Assume the availability of a method named makeLine that can be passed a non-negative integer n and a character c and return a String consisting of n identical characters that are all equal to c. Write a method named printTriangle that receives two integer parameters n and k. If n is negative the method does nothing. If n happens to be an even number, its value is raised to the next odd number (e.g. 4-->5). Then, when k has the value zero, the method prints a SYMMETRIC triangle of O's (the capital letter O) as follows: first a line of n O, followed by a line of n-2 O's (indented by one space), and then a line of n-4 O's (indented by two spaces), and so on. For example, if the method received 5,0 (or 4,0) it would print:

OOOOO
OOO
O

注意:在上面的输出中,第一行在第一个 O 之前包含 0 个空格,下一行包含 1 个空格,依此类推。

注意:这些说明说明了当 k 为零时该方法执行的操作,但由您(程序员)来确定当 k 不为零时该方法执行的操作并将其用于您的优势。

该方法不得使用任何类型的循环(for、while、do-while)来完成其工作。该方法应调用 makeLine 来完成创建不同长度的字符串的任务。

这就是我到目前为止所拥有的。我无法弄清楚在哪里放置间距。我相信这与 k 有关,但我不太确定。

public void printTriangle(int n, int k){ 
if(n < 0)
return;
if(n % 2 == 0)
n++;
if(k == 0){
System.out.println(makeLine(n, 'O'));
printTriangle(n-2, 0);
}
}

最佳答案

我不会给你答案,但希望这能给你一些提示。递归方法是通过调用自身来解决相同问题的较小版本来解决问题的方法。就您而言,问题是打印此内容(我已将 b 放在空白所在的位置):

OOOOO
bOOO
bbO

您正在打印第一行,然后解决同一问题的较小版本,即打印较小的三角形:

bOOO
bbO

问题是这个较小的版本并不完全相同;每行之前必须有额外的空格。多少额外空间?嗯,这就是为什么教练说“利用k来发挥你的优势”。如何递归调用该方法,并使用 k 告诉它显示额外的空格?

关于使用递归计算 n 高度的 Java 三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27182070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com