递归:阶乘以及菲波那切数列的程序实现

本文探讨了递归和分治策略,通过举例介绍了如何使用递归算法实现阶乘函数和斐波那契数列。递归算法将复杂问题分解为规模更小的相似子问题,直到子问题变得易于解决。文中详细阐述了这两个经典的递归实例。
摘要由CSDN通过智能技术生成

    分治法:把一个难以直接解决的大问题分割成一些规模较小的相同问题,以便各个击破,分而治之。

    分治法中的子问题和原问题的类型一致,子问题不断缩小直至变成可以求解的简单问题,从而就引入了递归算法。     

    直接或间接调用自身的算法称为递归算法。

例子1:阶乘函数

import java.util.Scanner;

/*阶乘函数
 * 递归定义:n!={1  n=0
 *              {n(n-1)!  n>0 */

public class JieCheng {
	static int result = 0;  //阶乘结果

	int jiecheng(int n1) {

		if (n1 == 0) {       //n=0
			result = 1;
		}
		if (n1 > 0) {         //n>0
			result = n1 * jiecheng(n1 - 1); //递归调用
		}
		return result;

	}

	public static void main(String[] args) {
		for (int i = 0; i < 100; i++) {   //做一个循环可以连续输入阶乘的数值
			Scanner in = new Scanner(System.in);
			System.out.println("-----输入阶乘的数值(n>=0)-----");
			int n = in.nextInt();

			JieCheng jc = new JieCheng();
			jc.jiecheng(n);

			System.out.println(result);
		}

	}

}


例子2:Fibonacci

import java.util.Scanner;


public class Fibonacci {

	/**
	 * 菲波那切数列:
	 * 无穷数列:1,1,2,3,5,8......
	 * 递归定义:F(n)= 1...n=0
	 *                 1...n=1
	 *                 F(n-1)+F(n-2)...n>1
	 */
	static int result = 0;  //结果

	int fibonacci(int n) {

		if (n<=1) {       //n<=1
			result = 1;
		}
		if (n > 1) {         //n>0
			result = fibonacci(n-1)+fibonacci(n-2); //递归调用
		}
		return result;

	}

	public static void main(String[] args) {
		for (int i = 0; i < 100; i++) {   //为了连续输入
			Scanner in = new Scanner(System.in);
			System.out.println("-----输入想要的到的第n位菲波那切数列的数值(n>=1)-----");
			int n = in.nextInt();

			Fibonacci f = new Fibonacci();
			f.fibonacci(n-1);      //前面的位数是从0计起的,为了符合常识,这里n要减去1

			System.out.println(result);
		}

	}
	

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值