数据结构算法题

本文展示了如何用递归方法求解斐波那契数列和阶乘,以及运用二分查找法寻找一元二次方程的根。程序代码详细呈现了每一步的执行过程。

写出求解一元二次方程的根的二分查找方法

package 第二周;
//4.写出求解一元二次方程的根的二分查找方法,并观察每一步的执行(Math.abs(number1-number2)
import java.util.Scanner;
public class erfenfa 
{
	public static void main(String[] args) 
	{
	        double x1 = 0.2f; //保留两位小数
	        double x2 = 2f;
	        double mid =(x1+x2)/2;
	        if((Math.abs(f(x2)-f(x1))>0.000001))
	        {
		        
	        	if(isArea(x1, mid))
		        {
		        	x2=mid;
		        	f(x2);
		        }
		        if(isArea(mid,x2))
		        {
		        	x1=mid;
		        	f(x1);
		        }System.out.println(mid); 
	        }  
	       
	        else if(f(mid)==0)
	        {
	        	System.out.println(mid);
	        }       	            
	}
	
	
	   public static boolean isArea(double a, double b) //两个数分别为正数和负数,不符合条件的返回FALSE
	    {
	        boolean result = true;
	        if(f(a) * f(b) > 0)
	            result = false;
	        else if(f(a) * f(b) < 0)
	            result = true;
	        return result;
	     
	    }
	     
	    public static double f(double x)
	    {
	        return x*x - 2*x +1;
	    }

}

写出求斐波那契数列的递归方法,并观察每一步的执行。

//3.写出求斐波那契数列的递归方法,并观察每一步的执行,再画出图解(观察到Fib(10))。
public class feibolaqi 
{
	public static int fib(int f)
	{
		if(f==1 || f==2)
		{
			return 1;
		}
		else
		{
			return fib(f-1)+fib(f-2); //递归
		}
	}
	public static void main(String[] args) 
	{
		int num =10; //定义十个数
		fib(num);
		for(int i=1;i<=num;i++)
		{
			System.out.print(fib(i)+" ");
		}
		
		
	}

写出求解阶乘的递归方法

//	2.写出求解阶乘的递归方法,并观察每一步的执行,再画出图解(观察到5!)。
public class jiecheng 
{
	public static int factorial(int i) 
	{
		if(i<1)
		{
			return 1;
		}
		else
			return factorial(i-1)*i;
	}
	
	public static void main(String[] args) 
	{
		int num=5;	//设置输出数为5个数的阶乘
		factorial(num);
		for(int i=0; i<num;i++)
		{
			int fact = factorial(i);
			System.out.println(i+"的阶乘是:"+fact);
		}

	}
/**
 * 0的阶乘是:1
1的阶乘是:1
2的阶乘是:2
3的阶乘是:6
4的阶乘是:24
 */
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值