精华内容
下载资源
问答
  • 使用while循环计算斐波那契数列到N
    千次阅读
    2021-07-23 17:28:31

    #define _CRT_SECURE_NO_WARNINGS 1 

    #include<malloc.h>  //动态内存分配.h文件

    #include<stdio.h>

    int fun1(int n) //函数 计算斐波那契数列
    {
        if (n <= 2)

            return 1;
        else
            return fun1(n - 1) + fun1(n - 2);
       
    }
    int fun(int n)
    {
        int a = 1;
        int b= 1;
        int c= 1;
        while (n > 2) //while循环,计算斐波那契,可省去递归的多余计算
        {
            c = a + b;
            a = b;
            b = c;
            n--;
            


        }
        return c;


    }

    int main()  //函数返回计算斐波那契
    {
        int n = 0;
        scanf("%d", &n);
        printf("n is:%d\n", fun(n));
        return 0;
    }
     

    更多相关内容
  • C语言数据结构递归之斐波那契数列因为自己对递归还是不太熟练,于是做POJ1753的时候就很吃力,就是翻棋子直到棋盘上所有棋子的颜色一样为止,求最少翻多少次,方法是枚举递归。然后就打算先做另一道递归的题(从数组...

    C语言数据结构递归之斐波那契数列

    因为自己对递归还是不太熟练,于是做POJ1753的时候就很吃力,就是翻棋子直到棋盘上所有棋子的颜色一样为止,求最少翻多少次,方法是枚举递归。然后就打算先做另一道递归的题(从数组中取出n个元素的组合),但是同样在递归的问题上不太理解。好吧,于是复习CPP,在第229页的时候,看到了斐波那契数列,回想起之前做过的一道题目,发现可以用递归的方法来做。于是决定优化一下之前的代码。

    以下这段摘自《C primer plus》

    斐波那契数列的定义如下:第一个和第二个数字都是1,而后续的每个数字是其前两个数字之和,例如,数列中前几个数字是1,1,2,3,5,8和13。…下面我们创建一个函数,它接受一个正整数n作为参数,返回相应的斐波那契数值。

    首先,关于递归深度,递归提供了一个简单的定义。如果调用Fibonacci(),当n为1或2时Fibonacci(n)应返回1;对于其他数值应返回Fibonacci(n-1)+Fibonacci(n-2);

    long Fibonacci(n)

    {

    if (n > 2)

    return Fibonacci(n-1)+Fibonacci(n-2);

    else

    return 1;

    }

    然后是兔子总数问题。

    有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月后又生一对兔子,假如兔子都不死,每个月兔子对数为多少?

    思考这道题的时候,如果你简单的推算一下,会发现兔子每个月的对数就是斐波那契数列。

    第一个月:1对;

    第二个月:1对;

    第三个月:2对;

    第四个月:3对:

    第五个月:5对:

    第六个月:8对;

    ……

    我之前做这道题的时候,觉得思路很简单,就是从第三个月起,求每个月的兔子数时,只要把这个月的前两个月总数相加。

    这是我之前的代码,用f1和f2表示月。:

    #include

    int main()

    {

    int f1,f2;

    int month,ct;

    printf("请输入月份:");

    scanf("%d",&month);

    if(month<=2)

    printf("两只。\n");

    if (month > 2)

    {

    f1 = f2 = 1;

    ct = 0;

    while(ct < month -2){

    f1 = f1+f2;

    ct += 1;

    f2 = f1+f2;

    ct += 1;

    }

    if (month %2 == 0){

    printf("第 %d 个月的兔子对数为:%d.\n",month,f2);

    }

    if (month %2 == 1){

    printf("第 %d 个月的兔子对数为:%d.\n",month,f1);

    }

    }

    return 0;

    }

    其实这个代码离递归就差一步,很接近了。但是我当时完全没有想到。

    这是我重新修改之后的代码:

    #include

    long Fibonacci(n)

    {

    if (n > 2)

    return Fibonacci(n-1)+Fibonacci(n-2);

    else

    return 1;

    }

    int main()

    {

    long num;

    int month;

    printf("请输入月份:");

    scanf("%d",&month);

    num = Fibonacci(month);

    printf("这个月的兔子对数为%d.\n",num);

    return 0;

    }

    只是很简单的修改,但是代码就整洁易懂了很多,也学到了新内容。

    工欲善其事必先利其器,共勉。

    如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    展开全文
  • code """ @Author : 行初心 @Date : 18-9-24 @Blog : www.cnblogs.com/xingchuxin @GitHub : github.com/GratefulHeartCoder """ def f(n): n1 = 1 n2 = 1 n3 = 1 if n (‘输入有误‘) return -1 while (n - 2) > 0...

    ?

    python : 3.7.0

    OS : Ubuntu 18.04.1 LTS

    IDE : PyCharm 2018.2.4

    conda : 4.5.11

    type setting : Markdown

    ?

    code

    """

    @Author : 行初心

    @Date : 18-9-24

    @Blog : www.cnblogs.com/xingchuxin

    @GitHub : github.com/GratefulHeartCoder

    """

    def f(n):

    n1 = 1

    n2 = 1

    n3 = 1

    if n < 1:

    print(‘输入有误‘)

    return -1

    while (n - 2) > 0:

    n3 = n2 + n1

    n1 = n2

    n2 = n3

    n = n - 1

    return n3

    def main():

    res = f(98)

    print(res)

    if __name__ == ‘__main__‘:

    main()

    ?

    result

    /home/coder/anaconda3/envs/py37/bin/python /home/coder/PycharmProjects/basic/demo.py

    135301852344706746049

    Process finished with exit code 0

    ?

    resource

    [文档] https://docs.python.org/3/

    [规范] https://www.python.org/dev/peps/pep-0008/

    [规范] https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_language_rules/

    [源码] https://www.python.org/downloads/source/

    [ PEP ] https://www.python.org/dev/peps/

    [平台] https://www.cnblogs.com/

    ?

    Python具有开源、跨平台、解释型、交互式等特性,值得学习。 Python的设计哲学:优雅,明确,简单。提倡用一种方法,最好是只有一种方法来做一件事。 代码的书写要遵守规范,这样有助于沟通和理解。 每种语言都有独特的思想,初学者需要转变思维、踏实践行、坚持积累。

    展开全文
  • 运行结果:

    运行结果:

    展开全文
  • 使用循环完成30位的斐波那契数列 1 1 2 3 5 8 11 19… 方法1: class Demo{ public static void main (String[] args){ // 斐波那契的第一个值 int num1 = 1; // 斐波那契的第二个值 int num2 = 1; int ...
  • 斐波那契数列又称费波那契数列(意大利语:Successione di Fibonacci),又译为费波拿契数、斐波那契数列、费氏数列、黄金分割数列。在西方,首先研究这个数列的是比萨的列奥那多(意大利人斐波那契Leonardo ...
  • } main函数: Fibonacci.C #include "Stack.h" #include int main(){ long result=0; long num; num=50; Stack S; S.base=0; S.top=0; S.stackSize=0; InitStack(&S); for(int i=num;i>0;i--){ Push(&S,i); } long ...
  • 斐波那契数列的算法实现 —— python

    千次阅读 2021-02-05 16:45:25
    斐波那契数列,简单地说,起始两项为0和1,此后的项分别为它...) 实现方式一:根据这一特性,可采用最简单的方法计算该项,循环计算每项的值,以下为python实现代码,输出该数列的前num项# -*- coding:utf-8 -*-def ...
  • 废话不多说,直接上代码 #include #include void f(int n); int main(void) { f(10); return 0; } void f(int n) { if(n==1) { printf(1\n); return; } if(n==2) { printf(1 1\n);... i
  • 斐波那契数列Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、...
  • LabVIEW的While循环

    2021-01-19 23:04:53
    While循环位于结构子选板“编程→结构→While循环”,同时也存在于选板“Express→执行过程控制→While循环”,如图1所示。结构子选板中的While循环和执行过程控制子选板中的While循环用法和作用是相同的,只不过在...
  • 斐波那契数列: 在数学上它以递归的方式进行定义,指这样的一个数列:0、1、1、2、3、5、8、13、21、34、55、89、144……,即前两个数为分别为0和1,从第3项开始,每项的值都等于其前两项之和。斐波那契数列Fib(n)用...
  • 今天利用三种不同循环语句来编写100以内的斐波那契数列 首先利用for循环语句 #include int main() { int a[100]={1,2}; int i; printf("%d",a[0]); for(i=2;a[i-1];i++) { } }
  • 问题描述:斐波那契数列是这样一个数列:1、1、2、3、5、8、13、21…第n个数是第(n-1)个数和第(n-2)个数的和; f=[1 1]; k=1; while f(k)<10000 f(k+2)=f(k)+f(k+1); k=k+1; end k f(k) k = 21 ans = ...
  • 本篇是第9题_斐波那契数列的C语言实现: 题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 用递归方法实现的代码量很小,但是时间复杂度是O(n^2),本文采用循环实现,时间...
  • python 递归\for循环_斐波那契数列

    千次阅读 2020-11-29 12:56:57
    Python3基础 用 while循环实现 斐波那契数列 镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ... ...
  • var i = 1; var j = 1; var sum = i + j; while (i < 100) { var s = i + j; i = j; j = s; sum += s; } console.log(sum);
  • 在这些时候,我可以附和着笑,项目经理是决不...斐波那契数列用Python怎样写的?”我想,小白一样的人,也配考我么?便回过脸去,不再理会。孔乙己等了许久,很恳切的说道,“不能写罢?……我教给你,记着!这些...
  •  while(a[i-1]+a[i-2]))  {  a[i]=a[i-1]+a[i-2];  printf("%d\t",a[i]);  i++;  } } 3. #include int main() {  int i=2;  int a[100];  a[0]=1,a[1]=2;  ...
  • 循环结构 while循环 while ( 循环条件 ) { 循环操作 } do while循环 do { 循环操作 } while ( 循环条件 );...while循环和do-while循环的区别 ...while循环一次都不会执行 do-while循环不管任何情况...斐波那契数列 (兔子
  • 定义:斐波那契数列指的是这样一个数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...这个数列从第三项开始,每一项都等于前两项之和。以输出斐波那契数列的前20项为例:方法一:比较标准的做法,是借助第三...
  • 基于Python实现斐波那契数列。 方法一:使用循环,通过yield生成器返回结果,使用时通过list转换为列表。这种方法效率更高,占用空间较小; 方法二:使用递归实现,效率很低,占用内存较高。 n=40时,方法一耗时...
  • 51nod1195斐波那契数列循环

    千次阅读 2016-12-23 10:37:21
    求 Fib 数模 n 的循环节: 1. 对 n 做因数分解: n=p1^e1 * p2^e2 * … * pt^et; 2. 求出每个素数 pi 对应 Fib 数模 pi 的循环节mi0 ,则 pi^ei 对应的 Fib 数模 pi^ei 的 循环节 mi=mi0 * pi^(ei-1); 3. Fib ...
  • Ⅰ、用for循环斐波那契数列问题: ①、//代码摘下直接可以运行 //斐波那契数列问题 #include<stdio.h> int main() { int t,s,a1,a2,n; s=0;a1=1;a2=1; printf(“Please input the n of Fibonacci!\n”); ...
  • /* 题目(斐波那契数列):计算斐波那契数列,直到某项大于1000终止,输出该项的值。 f1 = 1, f2 = 1, f3 = 2, f4 = 3... , fn = fn-1 + fn-2 规律:1 1 2 3 5 8 13,即前两项相加的和等于第三项*/ # include <...
  • 循环方式求解斐波那契数列

    千次阅读 2021-04-20 10:44:23
    斐波那契数列Fibonacci sequence)是1、1、2、3、5、8、13、21、34、55... 对于斐波那契数列的第n项求解,通常是使用递归方式实现,如下 public static int fbNum(int n) { if (n==1 || n==2) return 1; ...
  • K阶斐波那契数列循环队列)

    千次阅读 2018-06-20 12:04:05
    K阶斐波那契数列循环队列)#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;string.h&gt;#define MAXN 200typedef struct SeqQueue{ int q[MAXN]; int front; int ...
  • 斐波那契数列样例:1,1,2,3,5,8…… 特征:第一个和第二个数值都为1,从第三个数值起,每个数值的计算规律都是当前数值的上一个数值+上两个数值。例如上面例子中的第三个数值为2=1+1,第四个数值为3=2+1,第五个...
  • python3基础while斐波纳契数列

    千次阅读 2018-01-31 10:36:44
    # Fibonacci series: 斐波纳契数列 # 两个元素的总和确定了下一个数 a, b = 0, 1 while b 10: print(b) a, b = b, a+b 执行以上程序,输出结果为: 1 1 2 3 5 8 这个例子介绍了几个新特征。 第一行包含...
  • 斐波那契数列Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,202
精华内容 8,480
关键字:

斐波那契数列while循环