我转换的伪代码这里到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) 我有一个类似于这个字符串:
男孩对他的母亲说:"我能吃些糖果吗?"
如果我做了正常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)
显然,我可以逐个字符地循环,并跟踪我是否在字符串中以及所有......但是有更好的方法吗?还有正则表达式吗?
我正在与一个向各个方向无限延伸的世界进行游戏.这意味着,你可以在位置X:50,Y:50或者X:-50,Y:-50.但是......我不能用普通的C#List真正做到这一点......
我提出的所有想法似乎都太复杂/无效,无法工作......
我正在编写一个程序,当给出低级数学问题的图像(例如98*13)时,应该能够输出答案.数字为黑色,背景为白色.不是验证码,只是数学问题的图像.
数学问题只有两个数字和一个运算符,该运算符只能是+, - ,*或/.
显然,我知道如何进行计算;)我只是不确定如何从图像中获取文本.
一个免费的图书馆将是理想的...虽然如果我必须自己编写代码,我可能会管理.
我正在尝试为某个开源项目自动化构建过程.它将对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) 我有一张像这样的桌子:
<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)
但没有运气......我该怎么做?
所以,在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
我需要一个以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语句之外,还有什么方法可以做到这一点吗?
我正在编写一个计算PI值的函数,并将其作为double返回.到现在为止还挺好.但是一旦函数在小数位后达到14位,就不能再保持.我假设这是因为双精度有限.我应该怎么做才能在小数点后继续获得更多数字?
有一个网站在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)
没运气.