zoukankan      html  css  js  c++  java
  • 递归方法的重要规定——递归一定要向己知方向递归

    一代码比较
    1 代码示例1——朝小的一端递归

    public class Recursive1
    {
    	public static int fn(int n)
    	{
    		if (n == 0)
    		{
    			return 1;
    		}
    		else if (n == 1)
    		{
    			return 4;
    		}
    		else
    		{
    			// 方法中调用它自身,就是方法递归
    			return 2 * fn(n - 1) + fn(n - 2);
    		}
    	}
    	public static void main(String[] args)
    	{
    		// 输出fn(10)的结果
    		System.out.println(fn(10));
    	}
    }

     2 运行结果
    10497
    3 代码示例2——朝大的一端递归

    public class Recursive2
    {
    	public static int fn(int n)
    	{
    		if (n == 20)
    		{
    			return 1;
    		}
    		else if (n == 21)
    		{
    			return 4;
    		}
    		else
    		{
    			// 方法中调用它自身,就是方法递归
    			return  fn(n + 2)- 2 * fn(n + 1) ;
    		}
    	}
    	public static void main(String[] args)
    	{
    		// 输出fn(10)的结果
    		System.out.println(fn(10));
    	}
    }

     4 运行结果
    -3771

    二 结果分析比较
    代码示例1是这样一道数学题:f(0)=1,f(1)=4,f(n+2)=2*f(n+1)+f(n),其中n大于0的整数。
    代码示例2是这样一道数学题:f(20)=1,f(21)=4,f(n)=f(n+2)-2f(n+1),其中n是大于0的整数。
    代码示例1和代码示例2都是朝着已知方向递归,所以不存在问题,如果沿着未知方向递归,势必引起死循环。

  • 相关阅读:
    栈的操作总结
    C语言复习大纲
    生理周期
    石子合并
    幸运数字
    最长&最短文本
    C++引用
    C++入门
    直角三角形
    思维的囚徒--读书摘记和自己的肤浅解读--2021.1
  • 原文地址:https://www.cnblogs.com/ainima/p/6331670.html
Copyright © 2011-2022 走看看