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

来源:互联网 发布:有线网络电视怎么连接 编辑:程序博客网 时间:2024/06/09 21:32

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

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

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

例子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=0result = 1;}if (n1 > 0) {         //n>0result = 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<=1result = 1;}if (n > 1) {         //n>0result = 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要减去1System.out.println(result);}}}


0 0
原创粉丝点击