递归列举从数组b()中选出某些元素(允许重复)使其和等于num的所有组合

本文介绍了一段使用VBA实现的递归搜索算法,该算法通过定义数组并利用递归的方式查找符合条件的组合。文章展示了如何初始化数组、进行递归调用以及最终输出所有可能的组合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. DimmycountAsLong,s(1To65536,1To1),numAsLong
  2. Submain()
  3. Dima,b
  4. num=45
  5. b=Array(10,9,8,7,6,5,4,3,2,1)
  6. ReDima(num)
  7. a(0)=b(0)
  8. searchnum,0,0,a,b
  9. [a1].Resize(65536)=s
  10. MsgBox"OK",,"Totalcount="&mycount
  11. EndSub
  12. Subsearch(ByValnAsLong,ByValjAsLong,ByValindexAsLong,ByRefa,ByRefb)
  13. Fori=indexToUBound(b)
  14. Ifn=b(i)Then
  15. mycount=mycount+1
  16. a(j)=b(i)
  17. Fork=0Toj
  18. s(mycount,1)=s(mycount,1)&""&a(k)
  19. Next
  20. s(mycount,1)=Replace(Trim(s(mycount,1)),"","+")&"="&num
  21. Else
  22. a(j)=b(i)
  23. Ifn>=b(i)Thensearchn-b(i),j+1,i,a,b
  24. EndIf
  25. Next
  26. EndSub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值