zoukankan      html  css  js  c++  java
  • 今天想写一点简单的东西-关于计算机算法的

    计算机算法设计与分析

    之Fibonacci数列

    无穷数列1,1,2,3,5,8,13,21,34,55,...,称为Fibonacci数列。关于它的三种方法:
    
    ①简单变量法

    设置四个变量,f1, f2, f, i 再结合循环完成算法(以前二十项为例)

    #include<studio.h>
    int mian()
    {
    int f1,f2,f,i;
    f1 = 1,f2 = 1;
    for(i = 1,i <= 20,i++)
    {
    f = f1 + f2;  //传统迭代方法
    f1 = f2;
    f2 = f;
    }
    printf("%d",&f);
    return 0;
    }
    

    缺点:只能保留最后结果f,中间的值都没有保存 简化:将for循环里面改为:

    f2 = f1 + f2;
    f1 = f2 - f1;
    这样可以减少一个变量,只需要三个变量就可以了。
    
    ②数组

    可定义一个长度为20的一维整型数组,结合for循环完成算法

    #include<studio.h>
    int mian()
    {
    int f[20],i;
    for(int i = 0,i < 20,i++)
    {
        f[i] = f[i-1] +f[i-2];
    }
    printf("%d",&f[20]);
    return 0;
    }
    

    优点:可以将中间结果的每一个值保存下来

    ③函数
    public static int fibonacci(int n)
    {
    if(n <= 1)
    return 1;   //边界条件
    else 
    return fibonacci(n-1) + fibonacci(n-2); //递归方程
    }
    
    #include<studio.h>
    void mian()
    {
    int n =20;
    printf("%d",fibonacci(n));
    return 0;
    }
    

    使用函数的两个条件:①递归方程 ②边界条件

  • 相关阅读:
    bzoj 1497 最小割模型
    bzoj 1024 暴力深搜
    POJ1163(简单的DP)
    POJ3287(BFS水题)
    N皇后问题(DFS)
    BFS求解迷宫的最短路径问题
    poj2386(简单的dfs/bfs)
    Fence Repair(poj3253)
    Best cow Line(POJ 3617)
    全排列
  • 原文地址:https://www.cnblogs.com/chong-IT/p/5255340.html
Copyright © 2011-2022 走看看