• 费事数列——我的理解


     一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。

    View Code
        public class MainClass    
    {
    public static void Main()
    {
    Console.WriteLine(Foo(
    30));
    }
    public static int Foo(int i)
    {
    if (i <= 0)
    return 0;
    else if(i > 0 && i <= 2)
    return 1;
    else return Foo(i -1) + Foo(i - 2);
    }
    }

    第一个月有一对刚诞生的兔子  第两个月之后它们可以生育  每月每对可生育的兔子会诞生下一对新兔子  兔子永不死去  假设在n月有新生及可生 育的兔子总共a对,n+1月就总共有b对。在n+2月必定总共有a+b对:因为在n+2月的时候,所有在n月就已存在的a对兔子皆已可以生育并诞下a对后 代;同时在前一月(n+1月)之b对兔子中,在当月属于新诞生的兔子尚不能生育。  斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入, 故又称为“兔子数列”。 

    我在纸上画了半天也没能理解,于是我就把兔子换成了人。

    (数列中的第一个1为张先生,第二个1为张先生娶了李小姐,2为他们结婚了,3为第一年)

    第一年 :张+李=赵(张先生和李小姐生了个儿子叫赵,于是乎一共就有了3口人)

    第二年:张+李=钱,赵+朱(张先生和李小姐生了个儿子叫钱,他们第一年生的儿子娶了个老婆叫朱,一共5口人)

    第三年:张+李=孙,赵+朱=鲁,钱+乐(张先生和李小姐生了个儿子叫孙,赵先生和朱小姐生了个儿子叫鲁,钱先生娶了个老婆叫乐一共8口人)

    第四年:张+李=周,赵+朱=韦,钱+乐=计,孙+梅,鲁+丁(张先生和李小姐生了个儿子叫周,赵先生和朱小姐生了个儿子叫韦,钱先生和乐小姐生了个儿子叫计,孙前生娶了个老婆叫梅,鲁先生娶了个老婆叫丁,一共13口人)

    第五年:张+李=吴,赵+朱=昌,钱+乐=于,孙+梅=芮,鲁+丁=宁,周+叶,韦+闻,计+温(张先生和李小姐生了个儿子叫吴,赵先生和朱小姐生 了个儿子叫昌,钱先生和乐小姐生了个儿子叫于,孙先生和梅小姐生了个儿子叫芮,鲁先生和丁小姐生了个儿子叫宁,周先生娶了个老婆叫叶,韦先生娶了个老婆 闻,计先生娶了个老婆叫温,一共21口人)

    ......

    这样理解我就能理解上面的算法实现了

  • 相关阅读:
    redis配置文件 redis.conf
    CentOS安装 NodeJS 和 NPM
    Docker中运行redis报错误: Failed opening the RDB file root (in server root dir /etc/cron.d) for saving: Permission denied
    AllowControlAllowOrigin:谷歌跨域扩展插件下载
    uniapp 判断客户端环境是安卓还是ios
    Windows环境下查看某个端口被哪个应用程序占用并停止程序
    Oracle数据库快速入门
    Linux 使用vim命令编辑文件内容
    解决VMware Workstation客户机与宿主机无法复制文件和共享剪切板的问题
    Spring 中的事件机制 ApplicationEventPublisher
  • 原文地址:https://www.cnblogs.com/tony312ws/p/2127206.html
Copyright © 2020-2023  润新知