C++分苹果递归算法

img

这个是chatgpt给的递归函数(我只学了递归所以没办法用动态搜索来做):

img

img


我有几个点不明白:

  1. 这个递归函数是先把option1递归完再递归option2吗?有什么影响呢?为什么呢?
  2. 我是真的不理解option1和option2的意义?能不呢帮我拆解下递归(我想看看样例(GPT给的看不懂啊))
  3. 什么情况下才会返回option1和option2的最小值呢?(这俩的最小值到底是什么啊?这个变量哪来的值啊)
  4. 如果option1递归完,会怎样影响option2递归的情况?
    (不懂的有点多,等我追问哈)
    帮我系统得讲下

1、可以这样理解,每一次递归都是一次选择,你可以看到这个函数里面有一个变量index,这个就是表示当前递归到数组里面第几个数字,先后顺序没有影响,因为都会遍历一遍
2、option1表示sum1里面加数字weight[index]算出差值最小值,option2表示sum2里面加数字weight[index]算出差值最小值。
3、当全部遍历之后就会产生一个值就是递归到index==n的时候
4、不会影响,这俩个是分开的

img

img

option1和option2代表着第(index+1)苹果放在第一组或第二组的情况,也就是这n个苹果在两组内的排列组合的情况

http://t.csdn.cn/yX4Ud