我不确定堆栈溢出异常是什么.当我以另一种形式调用方法时,我收到此错误.
这个功能有一些问题吗?
unsigned long factorial(unsigned long m)
{
return (m == 0) ? 1 : m * factorial(m - 1);
}
Run Code Online (Sandbox Code Playgroud)
如果我添加另一个功能:
int myCombina(int q, int p)
{
return factorial(q) / ( factorial(q) * factorial(q-p) );
}
Run Code Online (Sandbox Code Playgroud)
这个myCombina()效率不高,因为应该取消最大公约数以找到组合.
max(factorial(q),factorial(qp))可以被取消.我们只需要计算qx(q-1)... x(q -k +1).
还有其他问题吗?
欢迎任何评论.
谢谢
以下使用筛子打印一些质数的代码会在在线判断中生成SIGSEGV错误.
int main()
{
long count=1;
int arr[100000000];
printf("2\n");
for(long i=3;i<100000000;i=i+2)
{
arr[i]=1;
}
for(long i=3;i<100000000;i=i+2)
{
if(arr[i]==1)
{
count++;
if(count%100==1)printf("%ld\n",i);
for(long j=2;i*j<100000000;j++)
arr[i*j]=0;
}
}
//scanf("%ld",&count);
}
Run Code Online (Sandbox Code Playgroud)
但如果我删除一些陈述:
for(long i=3;i<100000000;i=i+2)
{
if(arr[i]==1)
{
count++;
}
}
Run Code Online (Sandbox Code Playgroud)
如上修改第二个循环.它没有显示错误.可以帮助解决为什么会发生这种情况以及如何在第一个程序中纠正这个问题.
好吧,我只是想创建一个基本的加载页面,所以我有一些性感的页面出现(没有做任何加载)只是在我的真实表单出现之前显示几秒钟
这是我的代码:
public partial class LoadingPage : Window
{
System.Threading.Thread iThread;
public LoadingPage()
{
InitializeComponent();
}
private void Refresh()
{
System.Threading.Thread.Sleep(900);
MainWindow iMain = new MainWindow();
iMain.ShowDialog();
this.Dispatcher.Invoke(new Action(Close));
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
iThread = new System.Threading.Thread(new ThreadStart(Refresh));
iThread.SetApartmentState(System.Threading.ApartmentState.STA);
iThread.Start();
}
private void Close()
{
this.Close();
}
Run Code Online (Sandbox Code Playgroud)
这可以工作,但会导致堆栈溢出,并且在主页面打开时不会关闭加载窗口.
此外,close方法有一个绿色下划线说"隐藏继承的成员System.Window.Windows.Close()使用new关键字,如果隐藏是有意的"
问题是:是什么导致堆栈溢出?
我有以下简单的类来管理我的SQL数据库操作
public class DatabaseManager
{
private string CommandString
{
set { CommandString = GetCommandString(commandtype); }
get { return CommandString; }
}
public string commandtype
{
set;
get;
}
public DatabaseManager(string commandtype)
{
commandtype = this.commandtype;
CommandString = GetCommandString(commandtype);
}
public DatabaseManager()
{
}
public static SqlConnection CreateConnection()
{
return new SqlConnection(Properties.Settings.Default.connectionString);
}
//returns a datatable if the command requires a dataadapter
public DataTable ExecuteSelect()
{
var x = new DataTable();
using (var da = new SqlDataAdapter(CommandString, DatabaseManager.CreateConnection()))
{
da.Fill(x);
} …Run Code Online (Sandbox Code Playgroud) 我正在实施一个应该从摄氏温度到华氏温度计算的程序.但是,如果我启动该程序,当我点击"计算"按钮时它会崩溃.在Java中,当方法从第72行开始时,我得到以下错误

627 627 com.example.ubersatzer AndroidRuntime FatalException: main
627 627 com.example.ubersatzer AndroidRuntime java.lang.StackOverflowError
627 627 com.example.ubersatzer AndroidRuntime at.come.example.ubersatzer.InputFragment.isConvertFromCelsiusToFahrenheit (InputFragement.java:72)
Run Code Online (Sandbox Code Playgroud)
这里是活动类的代码,相关方法:
public void onClick(View view) {
switch (view.getId()) {
case R.id.buttonConvert:
convert();
break;
}
}
private void convert() {
if (inputFragment.isConvertFromCelsiusToFahreinheit()) {
doConvertFromCelsiusToFahrenheit();
}
}
private void doConvertFromCelsiusToFahrenheit(){
String celsiusStringValue = inputFragment.getCelsiusValue();
double celsiusValue = Double.parseDouble(celsiusStringValue);
double fahrenheitValue = ((celsiusValue * 9) / 5 ) + 32;
outputFragment.setOutput(String.valueOf(fahrenheitValue) + "F");
}
Run Code Online (Sandbox Code Playgroud)
这里是InputFragment.java类的isConvertFromCelsiusToFahrenheit()的代码
public boolean isConvertFromFahrenheitToCelsius() {
if (inputFahrenheit.getText() != null
&& inputFahrenheit.getText().toString().trim().length() …Run Code Online (Sandbox Code Playgroud) 我有一个页面,我测试的东西,所以这不是非常重要的修复,但我想知道是什么导致此异常.页面很简单.我有一个函数叫做MakeTheData大约38,000行添加数据点.我注意到在启动页面时我遇到了堆栈溢出异常.
你可以在这里看到它命中断点来调用该函数.然后我继续......

现在我得到了一个堆栈溢出异常,甚至没有遇到函数中的第一个断点.怎么会发生这种情况?

我创建了一个类来将搜索值存储到会话中.这样,当我从另一个页面返回搜索页面时,我可以获得存储在会话中的值.加载搜索页面时,我从会话中获取值,填充文本字段并随后处理该对象.但是StackOverflowException当我试图处理这个物体时,我得到了一个.为什么会发生这种情况,我该如何解决?
public class SearchValue : IDisposable{
public int ID {get; set;}
public string Name {get; set;}
public void Dispose()
{
this.Dispose();
}
}
public void SaveSearchValueToSession()
{
SearchValue searchValue = new SearchValue();
searchValue.ID = Convert.ToInt32(txtID.Text);
searchValue.Name = txtName.Text;
Session["SEARCH_VALUE"] = searchValue;
}
protected void Page_Load(object sender, EventArgs e){
SearchValue searchValue = (SearchValue)Session["SEARCH_VALUE"];
txtID.Text = searchValue.ID.ToString();
txtName.Text = searchValue.Name;
//Right here I would like to dispose the object
searchValue.Dispose()
}
Run Code Online (Sandbox Code Playgroud) 在Android上使用JavaFXPorts(在Asus Transformer Prime TF201平板电脑上使用Android 4.1.1)时,按下ComboBox时会抛出java.lang.StackOverflowError(请参阅下面的堆栈跟踪的顶部堆栈).
它发生在我的FX应用程序中的ComboBox中,并且使用Ensemble中的ComboBox示例也可100%重现.换句话说:不能使用JavaFX ComboBox.
我知道许多论坛上发布的Android堆栈大小限制,并且有关Android UI和Android API发生时应采取的操作的各种建议.但是,在使用JavaFX UI和JavaFXPorts时无法找到相关的想法.
任何修复\ tweak\workaround的想法都将非常感激.
E/AndroidRuntime(32212): FATAL EXCEPTION: JavaFX Application Thread
E/AndroidRuntime(32212): java.lang.StackOverflowError
E/AndroidRuntime(32212): at javafx.scene.Node.getTransformedBounds(Node.java:3422)
E/AndroidRuntime(32212): at javafx.scene.Parent.getChildTransformedBounds(Parent.java:1724)
E/AndroidRuntime(32212): at javafx.scene.Parent.recomputeBounds(Parent.java:1516)
E/AndroidRuntime(32212): at javafx.scene.Parent.impl_computeGeomBounds(Parent.java:1380)
E/AndroidRuntime(32212): at javafx.scene.layout.Region.impl_computeGeomBounds(Region.java:3078)
E/AndroidRuntime(32212): at javafx.scene.Node.updateGeomBounds(Node.java:3577)
E/AndroidRuntime(32212): at javafx.scene.Node.getGeomBounds(Node.java:3530)
Run Code Online (Sandbox Code Playgroud) 我有一个代码导致堆栈溢出问题,因为发生了不受控制的递归
public class Flaw {
Flaw() {
System.out.println("There");
}
Flaw obj = new Flaw();
public static void main(String[] args) {
new Flaw();
System.out.println("Hi");
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释为什么Flaw()构造函数不打印任何东西?