用递归方法求第n个Fibonacci数。
源程序:
import java.io.*;
class Fibonacci
{
public long Fibonacci(int n) //用来计算n个Fibonacci的方法
{
if(n==1)
return 1;
else if(n==2)
return 1;
else
return Fibonacci(n-1)+Fibonacci(n-2);
}
public static void main(String[] args)throws IOException
{
int n;
System.out.println("请输入整数n,以便求得Fibonacci(n):");
Fibo k=new Fibo();
byte[] b = new byte[6]; //6个字节的数组用于存放字符串,b为局部变量
System.in.read(b); //从键盘读入一个数字串保存于b中
String str = new String(b).trim(); //b转换成String对象str并压缩
n = Integer.parseInt(str); //数字串转换成整数n
System.out.println("求得Fibonacci("+n+")为:");
System.out.println(k.Fibonacci(n));
}
}
运行结果:(输入正整数)
请输入整数n,以便求得Fibonacci(n):
10
求得Fibonacci(10)为:
55
分享到:
相关推荐
在信息学奥赛中,斐波那契数列的常见问题是求第n项的值或者计算前n项的和。解这类问题通常有以下几种方法: 1. **直接递归**:最直观的方法是通过递归函数来实现,但这种方法效率极低,因为它会重复计算很多相同的...
接下来,属性表(Properties)是Java中用于存储键值对的数据结构,常用于配置文件。`java.util.Properties`类提供了加载、保存和操作属性的方法。例如,我们可以从`.properties`文件加载配置,然后在程序中动态地...
3. for 循环是一种常见的编程结构,在Java中用于重复执行一段代码直到满足某个条件。 4. while 是另一种循环控制结构,它可以不断地执行一个语句或代码块,直到给定条件不再成立为止。 5. '\n' 表示换行符,用于在...
这里的关键是理解每个月的兔子数量是如何计算的:第n个月的兔子数量等于第n-1个月的兔子数量加上第n-2个月的兔子数量。 **扩展知识:** - **递归实现**:除了使用循环,还可以使用递归来实现菲波那契数列的计算,...
3. 栈与队列:栈是一种后进先出(LIFO)的数据结构,Java中用Stack类来实现。队列则是先进先出(FIFO)的数据结构,可以使用LinkedList或Queue接口的实现类,如ArrayDeque。 4. 树结构:包括二叉树(Binary Tree)...
·快速排序(第7.1节)中用到的划分方法与期望线性时间顺序统计算法(expected linear-time order-statistic algorithm,第9.2节)有所变化。现在,我们采用了Lomuto提出的方法,并将该方法与指示器随机变量一起使用,...
1. **数组**:作为最基础的数据结构,数组在Java中用于存储同一类型的数据集合。了解数组的声明、初始化、访问和操作方法是学习数据结构的基础。 2. **链表**:链表不同于数组,它的元素在内存中不是连续存放的。...
5. **递归与回溯**:递归是解决问题的一种强大工具,常用于解决如阶乘计算、斐波那契数列等问题;回溯则常用于解决排列组合问题,如八皇后问题。 6. **字符串处理**:Java中的`String`类提供了丰富的API,用于处理...
·快速排序(第7.1节)中用到的划分方法与期望线性时间顺序统计算法(expected linear-time order-statistic algorithm,第9.2节)有所变化。现在,我们采用了Lomuto提出的方法,并将该方法与指示器随机变量一起使用,...
Java中用二维数组存储子问题状态,递推求解。 除了基础算法,Java还支持高级算法,如堆排序、堆数据结构(Java中的PriorityQueue)、哈希表(HashMap和HashSet)用于快速查找,以及Trie树(字典树)进行字符串相关...
3. **异常处理**:Java中用try-catch-finally语句处理运行时错误,保证程序的健壮性。 4. **集合框架**:ArrayList、LinkedList、HashSet、HashMap等,这些都是在解决问题时常用的数据存储和操作工具。 5. **输入...
Java 中的递归和栈常常用来实现回溯。 8. **动态规划**:通过构建状态转移方程解决最优化问题,如斐波那契数列、背包问题。Java 中用二维数组或列表来存储状态。 9. **排序与搜索**:包括快速排序、归并排序、二分...