lintCode 371. 用递归打印数字 java

用递归的方法找到从1到最大的N位整数。

java   循环方法

public class Solution {
   
    public List<Integer> numbersByRecursion(int n) {
        // write your code here
        ArrayList<Integer> re = new ArrayList<Integer>();
        int nu = 1;
        for(int i = 1; i <= n;i++){
            nu = 10*nu;
        }
        for(int i = 1; i<nu;i++){
            re.add(i);
        }
        return re;
    }  
        
    }

}

Java 递归方法

public class Solution {   
    public List<Integer> numbersByRecursion(int n) {
        // write your code here
        ArrayList<Integer> re = new ArrayList<Integer>();
        if(n<1)
            return re;
        recursion(n, re);
        return re;
        
    }
    public void recursion(int n, List<Integer> re){
        
        if(n > 1)
            recursion(n-1, re);
        int max = 9;
        if (re.size() != 0)
            max = (re.size() + 1) * 10 -1;
        for(int i = re.size()+1; i<=max; i++)
            re.add(i);
    }
}

 

`Stream.of` 是 Java 中 Stream API 的一部分,它用于创建一个顺序的流。如果你想要递归地查询对象中的数据,通常意味着你需要遍历一个对象的嵌套结构,例如树形结构或图结构,并且可能需要深度优先搜索(DFS)或广度优先搜索(BFS)这样的算法。在这种情况下,`Stream.of` 本身并不直接支持递归操作,但是你可以结合 Java Stream API 和递归方法来实现这个目的。 下面是一个使用 Java Stream API 结合递归来实现对嵌套对象结构数据查询的示例思路: ```java import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class RecursiveSearch { // 假设有一个简单的类结构,用于递归查询的演示 static class Node { int value; List<Node> children; Node(int value, List<Node> children) { this.value = value; this.children = children; } } // 递归方法用于遍历嵌套结构 public static Stream<Node> traverse(Node node) { return Stream.concat( Stream.of(node), node.children.stream().flatMap(RecursiveSearch::traverse) ); } public static void main(String[] args) { // 构建测试数据结构 Node root = new Node(1, List.of( new Node(2, List.of( new Node(4, List.of()), new Node(5, List.of()) )), new Node(3, List.of( new Node(6, List.of()), new Node(7, List.of()) )) )); // 使用递归方法和 Stream API 来查询数据 List<Integer> result = traverse(root) .map(node -> node.value) // 提取值 .collect(Collectors.toList()); // 收集结果 // 输出查询结果 result.forEach(System.out::println); } } ``` 在这个例子中,我们定义了一个简单的树形结构 `Node` 类,其中包含一个整数值和一个子节点列表。`traverse` 方法是一个递归方法,它遍历每一个节点,并且对于每个节点的子节点也递归调用 `traverse` 方法,从而实现深度优先遍历。最后,我们通过映射(`map`)每个节点的值到一个新的流,并使用 `collect` 方法将结果收集到列表中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_37625937

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值