gpt4 book ai didi

java - 是否可以在java中编写一个递归方法,其中列表中的所有项目都被最后一个元素替换?(不使用循环)

转载 作者:太空宇宙 更新时间:2023-11-04 06:56:30 26 4
gpt4 key购买 nike

例如,如果列表有元素 (a,b,c,d,e),则调用方法后它应该有 (e,e,e,e,e)

假设有一个通用方法:

public static <T> void duplicateLast(List<T> list){}

是否可以编写一个递归方法,其中列表中的所有项目都被最后一个元素替换,而不使用任何循环。

最佳答案

当然 - 方法如下:

  • 递归元素始终查看列表中的当前节点(请参阅下面的注释以了解签名更改)。
  • 如果当前元素是列表中的最后一个元素,则返回其值
  • 否则,进行递归调用,将从中获得的值分配给您自己的元素,并返回相同的值。

注意:您需要更改递归方法的签名以返回 T,并使用列表迭代器而不是列表,以便您的方法同样适用于链接列表和数组列表。

以下是实现它的方法:

static <T> T recursiveLast(ListIterator<T> iter) {
if (!iter.hasNext()) {
// It is invalid to call recursiveLast on an empty list
return null;
}
T val = iter.next();
// Base case is when hasNext() returns false
if (iter.hasNext()) {
val = recursiveLast(iter);
}
iter.previous();
iter.set(val);
return val;
}

Demo on ideone.

关于java - 是否可以在java中编写一个递归方法,其中列表中的所有项目都被最后一个元素替换?(不使用循环),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22674805/

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