当前位置: 首页 > 知识库问答 >
问题:

数位的递归和(直到数位小于10)仅java 8 lambdas

燕星鹏
2023-03-14

我只是在练习lamdas java 8。我的问题如下

100
1 // true because its one
55
1     ie  5+5 = 10 then 1+0 = 1 so true
System.out.println(Arrays.asList( String.valueOf(number).split("") ).stream()
                                                                    .map(Integer::valueOf)
                                                                    .mapToInt(i->i)
                                                                    .sum() == 1);

那么,我如何使这个lambdas表达式递归,以便它也能在第二种情况下工作呢?我可以用lambda表达式创建一个方法,并每次调用它,直到返回值<10,但我在想lambdas中是否有任何方法

谢谢

共有1个答案

马清野
2023-03-14

如果您想要一个纯粹的lambda解决方案,那么应该忘记将它变成递归的,因为完全没有理由将迭代过程实现为递归:

Stream.iterate(String.valueOf(number),
               n -> String.valueOf(n.codePoints().map(Character::getNumericValue).sum()))
      .filter(s -> s.length()==1)
      .findFirst().ifPresent(System.out::println);

演示

 类似资料:
  • 是否有一种方法可以编写递归函数,该函数打印数字中的位数,以便: -它是一个无效函数 -"if"条件是if(num==0),返回 -“else”将调用递归。 我看到了两种不同类型的代码,其中一种是“if”条件具有递归调用,另一种是用于“return”。但这不是我想要的。 我很不擅长递归,并试图通过自己编写代码来理解它,但没有成功。 这是我的代码(我明白为什么它打印122而不是3,但我真的不知道如何以

  • 寻找替代算法 因此,需要更有效的替代算法。提前致谢

  • 好的,我如何将小数点四舍五入到第二位而不是第一位?我必须创建一个菜单,让“顾客”点餐,我们必须包括小计、税费和小费。我的代码运行得很好,除非总数大约是3.8美元,而它应该是3.80美元。我怎样才能只用数学来解决这个问题呢。圆形()?我菜单上的钱代码是 非常感谢你!

  • 问题内容: 我似乎在使用浮点数时失去了很多精度。 例如,我需要求解一个矩阵: 这是我用来从文本文件导入矩阵的代码: 我需要使用gauss-seidel进行求解,因此需要重新排列x,y和z的方程式: 这是我用来重新排列方程式的代码。是系数矩阵,是答案向量: 但是,我得到的答案并不精确到小数位。 例如,从上面重新排列第二个方程式后,我应该得到: 我得到的是: 这看起来似乎不是一个大问题,但是当您将数字

  • 问题内容: 我只想在编辑文本中显示两位小数,ofc我想在编辑文本中显示货币,但将其值限制为小数点后两位。 我已经看到了一些使用正则表达式的解决方案,但我不想这样做。我被告知Java支持一些内部库函数可以做到这一点。任何人都可以给我提示或为此提供一些有效的代码。 问候 问题答案: 您可以简单地使用 你会得到结果为

  • 问题内容: 我如何转换为? 问题答案: 您是否要仅用一位数字表示它: 或实际上四舍五入其他小数位? 甚至严格舍弃?