gpt4 book ai didi

java - 如何打印以下序列,同时满足这些条件

转载 作者:搜寻专家 更新时间:2023-10-31 20:04:01 25 4
gpt4 key购买 nike

这实际上是一道面试题。我必须使用 Java 打印以下内容:

9
9 8 9
9 8 7 8 9
9 8 7 6 7 8 9
. . .
. . .

在面试期间,我写了一段令人尴尬的代码,但它仍然有效 - 使用一个外循环,两个内循环(一个用于递减序列,一个用于递增序列!)和大量的变量。其中一个变量是每行的长度。

面试官让我尝试使用重写

  • 只有一个外环和一个内环

  • 没有行长度变量。

注:看了答案,我觉得面试官说的并不是第二种情况。他可能只是想让我简化我的代码,而第二点只是从他嘴里冒出来的。

所以,回到家后,我得出了这个结论:

int rowCnt = 5;

for(int i = 1; i <= rowCnt; i++)
{
int val = 9;
int delta = -1;
int rowLen = i * 2 - 1;

for(int j = 1; j <= rowLen; j++)
{
System.out.print(val + " ");

val += delta;

if(j >= rowLen / 2) delta = 1;
}

System.out.println();
}

在这里,我只使用了一个内循环。我使用 delta 值来确定是增加还是减少。对于每一行,我将当前索引与行的中点进行比较并更改增量。

我满足了第一个条件——只有一个内循环。但如果不使用行长度,我无法做到这一点。

我们如何在不知道行长的情况下打印它?

许多答案都可以接受,但我必须选择一个,并选择对我来说最容易理解的一个。

最佳答案

他们可能想听到“递归”这个词。

这是一个不需要长度的递归解决方案:

countDownInMiddle("", 9, "");

private static void countDownInMiddle(String start, int n, String end) {
if (n < 0) {
return;
}
System.out.println(start + n + end);
countDownInMiddle(start + n, n - 1, n + end);
}

关于java - 如何打印以下序列,同时满足这些条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15088582/

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