斐波那契数列问题(结果正确但运行超时,求解)

    xiaoxiao2021-03-25  103

    问题描述   斐波那契数列大家都非常熟悉。它的定义是:   f(x) = 1 .... (x=1,2)   f(x) = f(x-1) + f(x-2) .... (x>2)   对于给定的整数 n 和 m,我们希望求出:   f(1) + f(2) + ... + f(n) 的值。但这个值可能非常大,所以我们把它对 f(m) 取模。   公式如下   但这个数字依然很大,所以需要再对 p 求模。 输入格式   输入为一行用空格分开的整数 n m p (0 < n, m, p < 10^18) 输出格式   输出为1个整数,表示答案 样例输入 2 3 5 样例输出 0 样例输入 15 11 29 样例输出 25 import java.util.*; public class Main { public static int f2(int n){ //表示第n项 if(n==1||n==2) return 1; else if(n>2){ return f2(n-1)+f2(n-2); } return 0; } public static int f1(int n){ //表示前n项的和 if(n==1) return 1; else if(n==2) return 2; else if(n>2){ return f1(n-1)+f2(n); //返回前n-1项的和+第n项 } return 0; } public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int m=sc.nextInt(); int p=sc.nextInt(); f1(n); //求n项和的递归函数 f2(m); //直接递归求第n项 System.out.println((f1(n)
    转载请注明原文地址: https://ju.6miu.com/read-19539.html

    最新回复(0)