java - 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
解决方案
Solution.java:23: 错误:变量 c 可能没有被初始化 String d=Integer.toString(c); ^ 1 个错误
您没有c
在循环之前分配值。编译器无法知道是否会进入该循环。
结论:您无需为c
.
可以轻松修复:
int c = 0;
请注意:您需要这样做,因为 c 是方法中的局部变量。这些默认情况下不会初始化(例如,与类的字段相反)。
除此之外:研究命名。您的代码非常难以理解,只是因为您过度使用了单字符名称。使用有意义的名称,告诉您变量的用途。
推荐阅读
- javascript - 你是怎么学会编码的?你认为最好和最有效的方法是什么?
- python - 有没有办法使用 Python Regex 提取给定字符串中的特定模式
- python - Bot 只接受一个命令
- node.js - 填充两个模型猫鼬 node.js?
- kotlin - 为文件顶层实现 IntelliJ Completion Contributor
- python - 在 django 中创建用户时自动创建配置文件对象的最佳方法
- javascript - 使用递归在 Javascript 中创建倒计时
- bash - 编写一个 Bash 脚本,该脚本将文本文件作为输入并通过多个命令将文本文件传递给管道
- c++ - C++ array[size] 大于 65535 抛出不一致溢出
- amazon-web-services - 我可以在使用 cloudflare CDN 的同时为 2 个域使用相同的 AWS S3 存储桶吗