zoukankan      html  css  js  c++  java
  • python 实例六

    https://www.cnblogs.com/evablogs/p/6783498.html

    题目:斐波那契数列。

    程序分析:这个数列从第3项开始,每一项都等于前两项之和。故

    n=1,2,f=1

    n>2,f=f(n-1)+f(n-2)

    例如:1,1,2,3,5,8.....

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    >>> def f6(n):
        if n==1 or n==2:
            return 1
        elif n>2:
            return f6(n-1)+f6(n-2)
        else:
            print 'please input an incorrect number'<br>
    >>> for in range(1,10):
        print f6(i)
     
         
    1
    1
    2
    3
    5
    8
    13
    21
    34
    >>> f6(-2)
    please input an incorrect number

     网上答案:

    方法一

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    def fib(n):
    	a,b = 1,1
    	for i in range(n-1):
    		a,b = b,a+b
    	return a
    
    # 输出了第10个斐波那契数列
    print fib(10)

    方法二

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    # 使用递归
    def fib(n):
    	if n==1 or n==2:
    		return 1
    	return fib(n-1)+fib(n-2)
    
    # 输出了第10个斐波那契数列
    print fib(10)

    以上实例输出了第10个斐波那契数列,结果为:

    55

    方法三

    如果你需要输出指定个数的斐波那契数列,可以使用以下代码:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    def fib(n):
        if n == 1:
            return [1]
        if n == 2:
            return [1, 1]
        fibs = [1, 1]
        for i in range(2, n):
            fibs.append(fibs[-1] + fibs[-2])
        return fibs
    
    # 输出前 10 个斐波那契数列
    print fib(10)

    以上程序运行输出结果为:

    [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
  • 相关阅读:
    寄存器详解
    Sleep(0)的妙用
    源码分析之Dictionary笔记
    ASP.NET Core框架的本质
    Dictionary实现(收藏的)
    微软的判断一个数是不是质数的算法
    C#性能优化:延迟初始化Lazy
    C#3 分部方法,简单标记一下
    单例下并发的情况下访问私有变量的一个典型问题
    BeforeFieldInit的小叙
  • 原文地址:https://www.cnblogs.com/yuer20180726/p/10790250.html
Copyright © 2011-2022 走看看