用递归和非递归求斐波那契数列
递归的方法
#include<stdio.h>
#include<stdlib.h>
递归的方式计算斐波那契数
int FeiBo(int f)
{int n = 0;if (0 == f)printf("0的斐波那契数是0\n");else if (1 == f || 2 == f)n = 1;else n = FeiBo(f - 2) + FeiBo(f - 1);return n;
}
int main()
{int num = 0;int key = 0;printf("请输入要求的斐波那契数\n");scanf("%d", &key);num = FeiBo(key);printf("%d的斐波那契数是%d\n", key,num);system("pause");return 0;
}
用递归的方法思路是
***第一:***找出求这个问题的递归表达式,然后让它停止调用的方式是最后一次赋值给一个常数。
***第二:***为防止无休止的调用下去的办法是加条件判断,满足某种条件后就不在作递归调用,然后逐层返回。函数的递归调用可以分为两个阶段:一是递推阶段,将原问题不断的分解为新的子问题,最终达到已知的条件,这时递推段结束;二是回归阶段,从已知条件出发,按照递推的逆过程,逐一求值回归,最终到达地推的开始处,完成递归调用。
***第三:***它有一定的规律即一般都是一个或者两个判断,然后返回。
**
非递归求斐波那契数列
**
#include <stdio.h>
#include<stdlib.h>
非递归的方式计算斐波那契数
int fib(int n)
{int a1 = 1;int a2 = 1;int a3 = 0;if (n <= 2)return 1;else{while (n > 2){a3 = a1 + a2;a1 = a2;a2 = a3;n--;}return a3;}
}
int main()
{int n = 0;printf("请输入一个第n个数,第n个数的菲波那切数为:\n");scanf("%d", &n);printf("%d", fib(n));system("pause");return 0;
}
非递归求斐波那契数列方法是找到它的递推函数,用循环求出它的值。
用递归和非递归求斐波那契数列相关推荐
- 由递推关系式用差分方程的方法得到通项公式实现求斐波那契数列的第n项;迭代、递归、栈、差分方程之间的本质联系以及由推广的迭代法解决“变态青蛙跳台阶”问题;汉诺塔问题的数字特征以及用递归解决的原理推导。
最近几天在研究算法中一个比较基础且突出的问题,就是关于"递推关系式.递归.迭代.序列前k项和"之间的区别与联系. 一.斐波那契数列与差分方程 首先我们考察一个经典的算法,求斐波那契 ...
- linux求斐波那契数列前10项,linux求斐波那契数列的前10项以及总和.
C语言的函数问题求斐波那契前四十个数,斐波那契数列指的是这样一个数列:0.1.1.2.3.5.8.13.21.--在数学 />#include//the nest function used t ...
- C语言以递归求斐波那契数列(附完整源码)
递归求斐波那契数列 递归求斐波那契数列完整源码(定义,实现,main函数测试) 递归求斐波那契数列完整源码(定义,实现,main函数测试) #include <locale.h> #inc ...
- access求斐波拉契数列_打印目录,斐波那契数列的递归与循环,牧场牛数
实验报告 1 任务概述(任务说明) 1 f(n)=f(n-1)+f(n-2) f(0)=f(1)=1 , 求斐波那契数列第 20 项, 分别用循环和递归的方式, 比较时间效率.提示:可以使用 c 函数 ...
- 递归与迭代 | 求斐波那契数列第n项值的四种算法
前言: 昨儿晚上三点多睡不着,不知道胡思乱想了些啥,好不容易睡着了又做了些稀奇古怪的梦.考研还是继续,真难. 这一篇博客记录一下求斐波那契数列第n项值得几种方法,用到了递归和迭代的方法,所以首先我们来 ...
- 递归求斐波那契数列第n个数
斐波那契数列:第一个和第二个是1,从第三个开始每一项都是前两项的和 1 1 2 3 5 8 13 21 34 - 求斐波那契数列的第n项,利用递归思想,除了第一.二位,每一位都是前两项的和.递归函数的 ...
- 利用Python求斐波那契数列的第N项以及前N项和(循环、递归、集合)
著名的斐波那契数列,即从第三项开始,每一项都等于前两项之和. 之前写过利用Java语言来编写,由于最近正在学Python,所以将自己的想法记录在此,有需要的朋友可以参考一下. 写在前面:这里的三个方法 ...
- C语言递归算法求斐波那契,递归法求斐波那契数列(C语言版)
斐波那契数列: 又称黄金分割数列,指的是这样一个数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... 在数学上,斐波纳契数列以如下被以递归的方法定义 ...
- python斐波那契前20递归_算法python实现经典递归问题(汉诺塔, 斐波那契数列,阶乘)...
经典递归 汉诺塔问题 背景故事 传说印度某间寺院有三根柱子,上串64个金盘.寺院里的僧侣依照一个古老的预言,以上述规则移动这些盘子:预言说当这些盘子移动完毕,世界就会灭亡.这个传说叫做梵天寺之塔问题( ...
最新文章
- onbeforeedit和onbeginedit数据不一致_Redis缓存与数据库产生不一致的问题该如何解决?...
- patch是什么意思啊_学 Vue 看这个就够了 - 什么是 Vue.js
- 记录请求的耗时(拦截器、过滤器、aspect)
- 3d人脸识别算法opencv_热招职位算法类
- mysql 如何添加索引_MySQL如何创建一个好索引?创建索引的5条建议【宇哥带你玩转MySQL 索引篇(三)】...
- HikariDataSource 监控_Prometheus监控告警浅析
- 话唠黄金机器人_用了接吻教学机器人以后......哈哈哈哈不能我一个人瞎!
- HTML判断如果并且,将html转换为js,并且其中含有判断语句
- 赛门铁克发布第21期《互联网安全威胁报告》 揭示当前更为严峻的网络威胁现状...
- linux实现快捷键,Linux Bash下如何实现快捷键效果
- Hadoop权威指南读书笔记(2) — Yarn简介及Capacity Fair Scheduler
- echarts无数据时显示暂无数据进行占位
- php的在线问卷调查_php 在线问卷调查程序一
- @Aspect相关注解和属性详解
- 打造双网卡负载均衡服务器(转)
- layui 新手实例教程
- 杀戮尖塔(Slay the Spire) mod制作 --- 1
- 你真的会解决android ANR 问题吗?
- StrStrI 与 strstr
- 凤凰新闻岳建雄:互联网已经成为传统行业