此处不允许使用“void”类型 int s =solve(a, n-1) +solve(a, n-2);

问题描述 投票:0回答:2

当我编码时:

public class Solution {
    public static int[] generateFibonacciNumbers(int n) {
        // Write your code here.
        int[] a = new int[n];
        solve(a, n);

        return a;
    }

    public static void solve(int a[], int n){
        if(n<=1){
            a[n] = n;
            return;
        }

        int s = solve(a, n-1) + solve(a, n-2);
        a[n] = s;
    }
}

我得到这个输出:

Compilation Failed
./Solution.java:16: error: 'void' type not allowed here
        int s = solve(a, n-1) + solve(a, n-2);
                     ^
./Solution.java:16: error: 'void' type not allowed here
        int s = solve(a, n-1) + solve(a, n-2);
                                     ^
2 errors

我不知道如何开始问这个问题,除了问:

  1. 这里出了什么问题?
  2. 这个错误信息是什么意思?
java recursion fibonacci
2个回答
5
投票

当你将solve声明为void时,你告诉java你不希望它返回任何值。如果solve没有返回任何内容,那么加法有什么用呢?


0
投票

问题似乎在于尝试将没有返回类型的 void 函数的每个结果添加到 int。

您需要将solved的返回类型更改为int

© www.soinside.com 2019 - 2024. All rights reserved.