【问题标题】:Writing a recursive function in C# to create a string from characters [closed]在 C# 中编写递归函数以从字符创建字符串 [关闭]
【发布时间】:2014-03-28 10:48:50
【问题描述】:

目前,我有以下内容:

public char functName(int n)
{
    some functionality....
    if(condition1)
        return convertFuncToChar(variable) + functName(modifiedNumber);
    else
        return convertFuncToChar(variable);
}

但是,我意识到这并没有给我一个字符串(并且语法显示存在错误)。

我知道对于 c++,我很可能会使用 char* 来初始化函数,但这是 C#。

如果我用 String 初始化,我认为它也不起作用。

【问题讨论】:

  • public string functName(int n)?
  • 如果您显示实际代码会很有帮助,或者至少足以让我们了解这个函数的作用。
  • 可能不希望此方法一开始就递归。它当然看起来不太适合这里。你实际上想做什么?
  • 当然不会给你字符串,你的返回类型是char
  • 据我所知,您正在寻找以下两件事之一:new string(char[])StringBuilder,但我同意其他 cmets,更多代码会更好。

标签: c# string recursion char


【解决方案1】:

假设我正确理解了这个问题,您可以利用以下两点: 1)所有基本类型都实现了.ToString(),它为你创建了一个字符串 2) 字符串实现operator+()

以下是递归函数的示例,它将递归连接字符以创建字符串。输出是反向的数字作为字符串。

static string funcName(int n)
{
    if (n<10)
        return (n%10).ToString();
    return (n%10).ToString() + funcName(n/10);
}

当然,以非递归方式编写会更有效。

【讨论】:

  • ToString 是一个很好的建议。谢谢。我假设非递归,您建议在循环中使用标准函数来执行我需要的操作?我也可以试试。也许它可以减少总处理的行数。
  • 完全正确,通常使用堆栈和/或 while 循环。在上面的例子中:` static string funcName2(int n) { string s = "";而 (n>0) { s += (n%10).ToString(); n/=10; } 返回 s; }
猜你喜欢
  • 2015-05-12
  • 2015-06-11
  • 2020-10-24
  • 2017-07-07
  • 2014-02-22
  • 2021-03-24
  • 2014-08-01
  • 2023-04-05
  • 2016-07-04
相关资源
最近更新 更多