找到递归的解决方案:拥有精确的“ n”个不相等的相邻硬币所需的“硬币翻转”的最小数量?

我一辈子都无法弄清楚如何使用Java递归解决问题:

问题

给定一个由真值和假值组成的数组(代表硬币的正面或反面),请确定要使n个不相等的相邻硬币完全翻转的最小次数。

为了帮助我解决此问题,网站建议我使用以下值递归解决此问题:

  1. 数组中的索引i,因为可以使用索引i-1中的值来计算索引i的值。
  2. 迄今不相等的相邻硬币数量
  3. 每次递归都知道数组是以头还是尾结尾。

给定数组[F,T,T,F,F,F,T]且目标为n = 1个总数不相等的相邻硬币,则解决方案将最小翻转2次,因为翻转前两个T(真实值)到F(假值)将使数组只有1个点,其中相邻硬币不相等。