首页 > 解决方案 > java中的斐波那契字系列

问题描述

对于任意两个数字字符串 A 和 B,我们将 Fa,b 定义为序列 (A,B ,AB ,BAB ,ABBAB ,...),其中每个项是前两项的串联。

此外,我们将 Da,b(n) 定义为 Fa,b 第一项中的第 n 个数字,它至少包含

n位数。

例子:

设 A=1415926535 ,B=8979323846 。我们希望找到 Da,b(35)

, 说。

Fa,b 的前几项是:

1415926535 8979323846 141592653589793233846 897932384614159265358979323846 14159265358979323846897932384614159265358979323846

则 Da,b(35) 为第五项的第 35 位,即

9.

给你 q 个三元组 (A,B,n)。为他们所有人找到

大,b(n)。

输入格式

每个测试文件的第一行包含一个整数 q,它是三元组的数量。然后是 q 行,每行包含两个十进制数字字符串 a 和 b 以及正整数 n。

输出格式

精确打印 q 行,每行一个十进制数字: 对应三元组的 Da,b(n) 值。

public void fibo(String a,String b,int n){
    String n1=Integer.toString(n);
    char n2;
    n2=n1.charAt(1);
    int n3=Character.getNumericValue(n2);
    String c;
    for(int i=2;i<n3;i++){
        c=a+b;
        System.out.printf(c+" ");
        a=b;
        b=c;
    }

    System.out.println(c.charAt(n));
}

编译消息

Solution.java:26:错误:变量 c 可能尚未初始化 System.out.println(c.charAt(n)); ^ 1 个错误

退出状态

1

标签: java

解决方案


Solution.java:23: 错误:变量 c 可能没有被初始化 String d=Integer.toString(c); ^ 1 个错误

您没有c在循环之前分配值。编译器无法知道是否会进入该循环。

结论:您无需c.

可以轻松修复:

int c = 0;

请注意:您需要这样做,因为 c 是方法中的局部变量。这些默认情况下不会初始化(例如,与类的字段相反)。

除此之外:研究命名。您的代码非常难以理解,只是因为您过度使用了单字符名称。使用有意义的名称,告诉您变量的用途。


推荐阅读