java 为什么递归过不了呢?

P1035 [NOIP2002 普及组] 级数求和

starstarzhang @ 2023-12-05 14:58:48

k在小于或等于10时都没问题,当k大于10之后就会栈溢出,难道是内存限制问题吗?

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        k = sc.nextInt();
        dfs();
    }

    static int i = 1;
    static double sum = 0;
    static int k = 0;
    public static void dfs(){
        sum += (1.0 / i);
        i++;
        if(sum > k) {
            System.out.println(i-1); // 前面多++了一次
            return;
        }
        else dfs();
    }
}

by B_neutrino @ 2024-03-03 20:10:04

TLE炸了 每次调用dfs都会从头开始算,可以直接循环加,每次循环判断是否大于目标值


|