⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fibonacciserial.java

📁 有大量的java的实例
💻 JAVA
字号:
//本例题对书中代码稍加改动:msg数组下标扩充到150,另增加了输入数据的检查(1~9)
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class FibonacciSerial extends Applet implements ActionListener	//定义主类
{
 Label prompt = new Label("请输入菲波那契数列的长度(最大为10):");
 TextField input = new TextField(5);	//输入数列位置的区域
 String[] msg = new String[150];		//记录各次递归调用的情况
 int RequireCnt = 0;			//记录Fibonacci()方法调用次数
 int ReturnCnt = 0; 			//记录Fibonacci()方法返回次数

 public void init()
 {
	add(prompt);
	add(input);
	input.addActionListener(this);
	for(int i=0;i<150;i++)
		msg[i] = "";
 }
 public void paint(Graphics g)			//显示各次递归调用情况
 {
	for(int i=0;i<RequireCnt+ReturnCnt+1;i++)
		g.drawString(msg[i],10,40+15*i);
 }
 public void actionPerformed(ActionEvent e)
 {
	if(e.getSource() == input)	//用户输入数据后将计数器清零
	{
		RequireCnt = 0;
		ReturnCnt = 0;
		if(Integer.parseInt(input.getText())>=10 ||
                        Integer.parseInt(input.getText())<=0) //检查是否输入太大
		{
			prompt.setText("请输入小于10的正整数:");
			input.setText("");	//重新输入
		}
		else		 //调用菲波那契方法求取指定位置处数据
			Fibonacci(Integer.parseInt(input.getText())-1);
	}
	repaint();
 }
 long Fibonacci(int n) 			//菲波那契方法
 {
 	long temp;
	
	RequireCnt++;			//调用次数加1
	msg[RequireCnt+ReturnCnt] = Blanks(RequireCnt,ReturnCnt)
		+ "Fibonacci(" + n + "):";//记录调用
	if( n==0 || n==1 )
	{
		ReturnCnt++;//返回次数加1
		msg[RequireCnt+ReturnCnt] = Blanks(RequireCnt,ReturnCnt-1)
			+ "返回" + n;		//记录返回
		return n;//递归头
	}
	else
	{
		temp = Fibonacci(n-1)+Fibonacci(n-2);	//调用自身
		ReturnCnt++;//返回次数加1
		msg[RequireCnt+ReturnCnt] = Blanks(RequireCnt,ReturnCnt-1)
			+ "返回" + temp;	//记录返回
		return temp;
	}
 }
 String Blanks(int stepIn,int stepBack)	//计算显示递归调用层次的缩进字符串
 {
	String blank = "";
	for(int i=0;i<(stepIn-stepBack);i++)
		blank = blank + "    ";
	return blank;
 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -