小编Ent*_*ity的帖子

运行时异常,递归太深

我转换的伪代码这里到C#,并让它递归地重复10000次.但是我StackOverflow Exception经历了一次C#运行时错误9217.我怎么能阻止这个?

编辑如果它对任何人有帮助,这里是代码:

    private double CalculatePi(int maxRecursion)
    {
        return 2 * CalculatePi(maxRecursion, 1);
    }

    private double CalculatePi(int maxRecursion, int i)
    {
        if (i >= maxRecursion)
            return 1;
        return 1 + i / (2.0 * i + 1) * CalculatePi(maxRecursion, i + 1);
    }

    double pi = CalculatePi(10000); // 10,000 recursions
Run Code Online (Sandbox Code Playgroud)

EDIT2所以每个人似乎都同意我需要将其转换为迭代...任何人都可以提供一些代码吗?我似乎无法编写任何有效的迭代代码......

编辑感谢Paul Rieck的这个答案,我测试了它,它的工作原理如下:

    private static double CalculatePi(int maxRecursion)
    {
        double result = 1;
        for (int i = maxRecursion; i >= 1; …
Run Code Online (Sandbox Code Playgroud)

c# recursion exception

8
推荐指数
2
解决办法
4675
查看次数

C#advanced String.Split

我有一个类似于这个字符串:

男孩对他的母亲说:"我能吃些糖果吗?"

如果我做了正常String.Split的话,我得到:

{ 'The', 'boy', 'said', 'to', 'his', 'mother', '"Can', 'I', 'have', 'some', 'candy?"' }
Run Code Online (Sandbox Code Playgroud)

我想要一个像这样的数组:

{ 'The', 'boy', 'said', 'to', 'his', 'mother', 'Can I have some candy?' }
Run Code Online (Sandbox Code Playgroud)

显然,我可以逐个字符地循环,并跟踪我是否在字符串中以及所有......但是有更好的方法吗?还有正则表达式吗?

c# arrays split

8
推荐指数
1
解决办法
666
查看次数

具有负索引的数组的实现

我正在与一个向各个方向无限延伸的世界进行游戏.这意味着,你可以在位置X:50,Y:50或者X:-50,Y:-50.但是......我不能用普通的C#List真正做到这一点......

我提出的所有想法似乎都太复杂/无效,无法工作......

c# arrays

8
推荐指数
1
解决办法
3792
查看次数

使用哪个库从图像中提取文本?

我正在编写一个程序,当给出低级数学问题的图像(例如98*13)时,应该能够输出答案.数字为黑色,背景为白色.不是验证码,只是数学问题的图像.

数学问题只有两个数字和一个运算符,该运算符只能是+, - ,*或/.

显然,我知道如何进行计算;)我只是不确定如何从图像中获取文本.

一个免费的图书馆将是理想的...虽然如果我必须自己编写代码,我可能会管理.

c# ocr text-recognition

7
推荐指数
2
解决办法
3万
查看次数

从命令行构建Visual Studio 2008解决方案

我正在尝试为某个开源项目自动化构建过程.它将对SVN目录进行更新,使用CMake获取.sln文件,并构建它.我可以手动成功完成此操作,并从批处理脚本执行svn和cmake,但现在我需要构建解决方案.

快速谷歌搜索显示:

devenv /build release /project <projname> <solutionfile>.sln
Run Code Online (Sandbox Code Playgroud)

但是,它使用最新版本的visual studio(Visual Studio Professional 2011),而生成的.sln文件适用于Visual C++ Express 2008.我的计算机上安装了两个版本.有没有devenv我可以使用的Visual C++ Express 2008的?或者是否有命令行参数来指定要使用的版本?

UPDATE

我尝试使用msbuild,但这似乎不喜欢直接构建.vcproj文件,我不想通过构建.sln文件来构建所有项目文件.我最终使用了这个:

"C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" <myproj>.vcproj "Release|Win32"
Run Code Online (Sandbox Code Playgroud)

c++ compiler-construction command-line

7
推荐指数
1
解决办法
7805
查看次数

jQuery按名称和ID选择

我有一张像这样的桌子:

    <table>
        <tr>
            <td>
                <input type="radio" name="Sample1" id="Sample1" value="1" />
                <input type="radio" name="Sample1" id="Sample2" value="1" />
            </td>
            <td>
                <input type="radio" name="Sample2" id="Sample1" value="1" />
                <input type="radio" name="Sample2" id="Sample2" value="1" />
            </td>
            etc....
        </tr>
    </table>
Run Code Online (Sandbox Code Playgroud)

我希望能够通过name和选择一个特定的单选按钮id.EG,选择名称Sample2和ID 的单选按钮Sample1.我试过这样做:

    $('[id="Sample1"][name="Sample2"]').checked = true;
Run Code Online (Sandbox Code Playgroud)

但没有运气......我该怎么做?

jquery-selectors

6
推荐指数
1
解决办法
3万
查看次数

Visual Studio 2010中的C#事件订阅

所以,在visual studio中,如果你键入这样的东西:

retryExecutor.Retrying += 
Run Code Online (Sandbox Code Playgroud)

然后弹出一个小工具提示,说你可以按TAB它把它变成这个:

retryExecutor.Retrying+= new EventHandler(retryExecutor_Retrying);
Run Code Online (Sandbox Code Playgroud)

然后,如果TAB再次按,它会生成:

void retryExecutor_Retrying(object sender, EventArgs e)
{
    throw new NotImplementedException();
}
Run Code Online (Sandbox Code Playgroud)

当然,这非常有用.但我发现自己经常需要这样的结构:

retryExecutor.Retrying += (o, e) =>
{

};
Run Code Online (Sandbox Code Playgroud)

那么,无论如何都要添加一个新的快捷方式,或者至少改变按下的功能TAB

.net c# keyboard-shortcuts event-handling visual-studio-2010

6
推荐指数
1
解决办法
275
查看次数

字符串到System.Windows.Input.Key

我需要一个以String作为参数的函数,并返回一个System.Windows.Input.Key.例如:

var x = StringToKey("enter"); // Returns Key.Enter
var y = StringToKey("a"); // Returns Key.A
Run Code Online (Sandbox Code Playgroud)

除了if/else或switch语句之外,还有什么方法可以做到这一点吗?

c#

6
推荐指数
2
解决办法
7404
查看次数

C#高双精度

我正在编写一个计算PI值的函数,并将其作为double返回.到现在为止还挺好.但是一旦函数在小数位后达到14位,就不能再保持.我假设这是因为双精度有限.我应该怎么做才能在小数点后继续获得更多数字?

c# double double-precision

5
推荐指数
2
解决办法
6523
查看次数

Chrome扩展程序 - 覆盖.js文件

有一个网站在JS文件中有一个错误.JS文件仅在一个地方被引用:

    <script type="text/javascript" charset="utf-8" src="/r/js/no-closure/dialogs.js?v=2"></script>
Run Code Online (Sandbox Code Playgroud)

我已经下载了JS文件并修复了错误.有什么方法可以通过镀铬扩展覆盖/r/js/no-closure/dialogs.js我的dialogs_fixed.js

我试过(in background.js):

var script = $('[src*="dialogs.js"]');
script.attr("src", "dialogs_patch.js");
Run Code Online (Sandbox Code Playgroud)

没运气.

google-chrome-extension

5
推荐指数
2
解决办法
2763
查看次数