我一辈子都无法弄清楚如何使用Java递归解决问题:
问题
给定一个由真值和假值组成的数组(代表硬币的正面或反面),请确定要使n个不相等的相邻硬币完全翻转的最小次数。
为了帮助我解决此问题,网站建议我使用以下值递归解决此问题:
- 数组中的索引i,因为可以使用索引i-1中的值来计算索引i的值。
- 迄今不相等的相邻硬币数量
- 每次递归都知道数组是以头还是尾结尾。
例
给定数组[F,T,T,F,F,F,T]且目标为n = 1个总数不相等的相邻硬币,则解决方案将最小翻转2次,因为翻转前两个T(真实值)到F(假值)将使数组只有1个点,其中相邻硬币不相等。