java - 我想在java中使用递归打印一个系列
问题描述
您必须使用递归打印模式。给定一个输入 N 模式看起来像这样 N , a i , a i + 1 , a i + 2 ,....., N 。如果 a i > 0 则 a i + 1 = a i − 5 否则 a i + 1 = a i + 5 。这将是一个从 N 到 a i <= 0 的递减序列,然后是一个递增序列,直到 N 。(请参阅示例测试用例以获得更好的解释)
输入格式 第一行包含一个整数 T,表示测试用例的数量。对于接下来的 T 行中的每一行,每一行都包含一个整数 N 。
输出格式 对于新行上的每个测试用例,打印所需的模式。
约束 1 <= T <= 6
0 <= N <= 2000
示例输入
2
16
10
输出
16 11 6 1 -4 1 6 11 16
10 5 0 5 10
示例测试用例说明 对于第一个测试用例 N=16,它将是一个递减的序列,直到打印数量变为 <=0。16 11 6 1 -4 在这点之后它将是一个递增的序列,直到打印数量变为 N 1 6 11 16 所以图案是 16 11 6 1 -4 1 6 11 16。
我的代码在下面,但我得到的输出仅为 16,11,6,1,-4。帮助我更正此代码
import java.util.Scanner;
public class Day3
{
public static void series(int n,boolean b)
{
int temp = n;
boolean flag=b;
System.out.println(temp+" ");
if(flag==true)
temp-=5;
else if(flag==false)
temp+=5;
if(temp<=0)
flag=false;
if(temp<=n)
series(temp,flag);
}
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
while(t>0)
{
int n = sc.nextInt();
series(n,true);
t-=1;
}
}
}
解决方案
因为'n'在每种情况下都会发生变化。您必须创建另一个变量并在其中保留第一个“n”,以控制温度是否小于“n”。
例如
import java.util.Scanner;
public class Day3
{
int firstN = 0; //added that line
public static void series(int n,boolean b)
{
int temp = n;
boolean flag=b;
System.out.println(temp+" ");
if(flag==true)
temp-=5;
else if(flag==false)
temp+=5;
if(temp<=0)
flag=false;
if(temp<=firstN) //changed that line
series(temp,flag);
}
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
while(t>0)
{
int n = sc.nextInt();
firstN = n; //added that line
series(n,true);
t-=1;
}
}
}
还有一点小费;
你可以(flag)
用于(flag==true)
并且(!flag)
对于(flag==false)
推荐阅读
- macos - 在 Mac OS 10.16 (Big Sur) 中通过 homebrew 构建 libzip 时找不到 libz.dylib
- android - 为 ViewModel 创建单元测试
- javascript - Web 组件:如何监听表单输入的变化
- python - 从 python (jupyter notebook) 导入 R 库时出现问题,它返回错误“rpy2.rinterface.NULL”
- r - 使用 REAT 包中的 locq2 时出错,“要替换的项目数不是替换长度的倍数”
- java - @CrossOrigin 无法使用 Spring Boot。我该如何修复它?
- jsonschema - 导入模式但重新定义定义
- regex - 如何匹配特定字符串后的数字而没有积极的回溯?
- java - 有没有办法在每次迭代中使用递增数字作为对具有不同数字的方法的调用
- python - ReadFromPubSub->CloudStorage->BigQuery:订阅的大小永远不会减少,而且似乎只有 0.002% 的订阅到达 BigQuery