陷入递归解决方案

时间:2018-07-22 17:34:30

标签: c# string recursion

我正在解决http://codingbat.com/prob/p117334上的一些问题 迭代解决方案很简单,但是我尝试递归 解决方案使我陷入困境。我正在尝试更好地处理递归,但这让我很困惑。

我认为这可能是递归无法解决的问题 但是进一步的研究表明,迭代解决的任何问题也可以递归解决。

给出一个非空字符串,例如“ Code”,则返回一个字符串,例如“ CCoCodCode”。

LINQPad模板:

void Main()
{
    StringSplosion("Code").Dump(); // "CCoCodCode"
    StringSplosion("abc").Dump(); // "aababc"
    StringSplosion("ab").Dump(); // "aab"   
}

static string StringSplosion(string s) {

}

1 个答案:

答案 0 :(得分:2)

您可以看到解决方案是一个由一个字符组成的子字符串,然后由两个字符组成的子字符串,再由三个组成的等一系列字符串的递进序列。一种递归的查看方式可能是这样的:

  1. 空字符串的StringSplosion是空字符串(停止条件)
  2. 非空字符串的StringSplosion是不包含最后一个字符和字符串本身的字符串的StringSplosion的串联。

或者,在代码中:

public static String StringSplosion(String str) {
  if (str.Length == 0) {
    return str;
  }
  return StringSplosion(str.Substring(0, str.Length - 1)) + str;
}