我正在解决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) {
}
答案 0 :(得分:2)
您可以看到解决方案是一个由一个字符组成的子字符串,然后由两个字符组成的子字符串,再由三个组成的等一系列字符串的递进序列。一种递归的查看方式可能是这样的:
或者,在代码中:
public static String StringSplosion(String str) {
if (str.Length == 0) {
return str;
}
return StringSplosion(str.Substring(0, str.Length - 1)) + str;
}