A_A333 2018-10-01 01:09 采纳率: 0%
浏览 1365
已结题

递归问题:递归引用传递的问题

最近在学递归有两个问题困扰了我很久,
问题:递归引用传递的问题
贴个代码说事

 public static List<List<Integer>> threeSum(int[] nums,int counter,List<List<Integer>> results,List<Integer> result) {
    //递归
    }
就拿这个做例子,我发现比如说数组原始内容是{-1, 0, 1, 2, -1, -4},递归做的是找出三个元素使得a+b+c=0,比如说我在里面有循环,当我从第三次次递归回调到第二次递归时,数组里的变量也会回退到第二次的情况,但是为什么List列表不会回退到第二次呢,而是不管递归了多少次他都会一直往下记录?
  • 写回答

2条回答 默认 最新

  • threenewbee 2018-10-01 01:54
    关注

    请注意,对于引用对象来说,它们无论是几个变量名,都指向同一个对象。
    你有两个操作:
    (1)将一个引用指向另一个对象,比如
    list = new List...
    此时再操作的list和原来的没有任何关系了。并且函数实参修改引用不改变形参指向的对象。
    (2)通过引用修改对象,比如
    list.add(...)
    此时通过任何一个引用添加或者修改对象,别的引用访问的对象也会改变,因为只有一个对象,这个修改的不是引用而是对象本身

    评论

报告相同问题?

悬赏问题

  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64
  • ¥15 iOS 自定义输入法-第三方输入法
  • ¥15 很想要一个很好的答案或提示
  • ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
  • ¥15 怀疑手机被监控,请问怎么解决和防止
  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示