java - 以递归方式以升序打印整数
问题描述
今天,我参加了考试,有一个问题:
编写一个方法,以从 1 到 n的升序递归打印整数:
public class PrintIntegersAscendingOrder {
static int counter = 0;
public static void PrintIntegersAscendingOrder (int n)
{
if (n == 1)
{
System.out.printf("%d\n", ++counter);
}
else
{
System.out.printf("%d ", ++counter);
PrintIntegersAscendingOrder(n-1);
}
}
public static void main (String args[])
{
PrintIntegersAscendingOrder(5);
}
}
虽然这个方法现在有效,但最初的问题不是要求类定义,而是方法。在那里,我无法安装计数器(我在纸上的 if 内写了 counter,但它在程序中给出了错误)。如何在没有计数器变量的情况下准确正确地编写方法?
解决方案
你可以这样做:
public class IntegerAscendingOrder {
public static void main(String[] args) throws Exception {
printIntegersAscendingOrder(n);
}
private static void printIntegersAscendingOrder(int i) {
if (i < 1) {
return;
}
printIntegersAscendingOrder(i-1);
System.out.println(i);
}
}
您不需要类中的计数器变量,使用递归可以限制方法本身内的方法调用。
注意这一if (i < 1) {return;}
行,这将终止递归方法调用。
这篇文章应该可以帮助你开始使用递归
推荐阅读
- postgresql - PostgreSQL 中的 autovacuum 中的 autovacuum_vacuum_cost_delay 是什么?
- kotlin - 创造一个悦耳的词
- xml - 需要重新对齐 colspec 表项
- c# - 从文本文件中读取文本 ant 分离到变量
- windows - PowerShell | 使用“Get-ADComputer”从服务器获取存储
- terminal - 在 monaco 编辑器中集成终端 shell
- javascript - React-Native:比较数组中的值
- java - 设置值以在规则的一部分中定义流口水的类型
- android - 使用 Workmanager 进行 Hilt Instrumentation 测试不工作
- c# - 从 C# 中的 SQL Server 中选择带有换行符 ("\n") 的记录