gpt4 book ai didi

java - ActionListener 内的递归

转载 作者:行者123 更新时间:2023-12-02 10:22:49 25 4
gpt4 key购买 nike

我必须在ActionListener中添加添加递归来计算给定数字的斐波那契序列,我尝试以这种方式添加递归,但它不起作用。

        fibonacci.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
int a = Integer.parseInt(input1.getText());
if(a == 0)
result.setText(String.valueOf("0"));
else if(a == 1)
result.setText(String.valueOf("1"));
else
result.setText(String.valueOf(fibonacci(a - 1) + fibonacci(a - 2)));
} catch (Exception f) {
JOptionPane.showMessageDialog(rootPane, "ERROR: " + (f.getMessage()));
}
String aField = input1.getText();
if (e.getSource() == fibonacci) {
if ("".equals(aField)) {
String emptyFieldWarning;
emptyFieldWarning = "One or more fields is/are empty!";
JOptionPane.showMessageDialog(rootPane, emptyFieldWarning);
}
}
}
});

最佳答案

递归应该在它自己的方法中发生,ActionListener应该作为该递归的启动。

类似的东西

fibonacci.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String fibonacciStr = fibonacciRecursion(0, 1, 10);
}
}

String fibonacciRecursion(int value0, int value1, int depth){
StringBuilder fibStr = new StringBuilder();
if(depth > 0){
fibStr.append(fibonacciRecursion(value1, value0 + value1, depth-1));
}
return fibStr;
}

由于您没有提到任何限制,因此深度参数意味着您的递归有办法停止,以避免出现 SO。

我还没有对此进行测试,但它应该足以让您更接近自己设计的解决方案。

编辑

根据 @Tom Hawtin -tackline 的评论,这也可以通过 lambda 表达式来完成

fibonacci.addActionListener(actionEvent-> 
System.our.println(fibonacciRecursion(0, 1, 10)));

关于java - ActionListener 内的递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54201893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com