C语言实现Fibonacci数列递归
/* 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。 */ #include<stdio.h> #include<stdlib.h> int N=10007; /*计算Fibonacci函数*/ int Fibonacci (int n) { int Fn; if (n==1 || n==2) { Fn=1; } else { Fn = (Fibonacci(n-1) + Fibonacci(n-2))%N; } return (Fn); } int main(void) { int n,tap=1,F1,F2,Fn; /*判断是否继续分析下一个数。*/ while(tap) { /*保证分析的数有效*/ do { printf("*************Fibonacci***************\n"); /*简易菜单*/ printf("Please enter a positive integer for analysis:\n"); scanf("%d",&n); }while (n<1); /*开始分析*/ Fn=Fibonacci(n); printf("%d\n",Fn); /*判断是否继续分析下一个数*/ printf("enter 1 to continue,enter 0 to quit:\n"); scanf("%d",&tap); printf("\n"); } printf("Thank You.\n"); return 0; }
采用递归的方法,一次运行多次分析,若想一次运行只分析一次,只需将while循环去掉即可。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
C语言实现斐波那契数列(非递归)的实例讲解
废话不多说,直接上代码 #include <stdio.h> #include <stdlib.h> 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"); return; } printf("1 1 "); int*
-
C语言数据结构递归之斐波那契数列
C语言数据结构递归之斐波那契数列 因为自己对递归还是不太熟练,于是做POJ1753的时候就很吃力,就是翻棋子直到棋盘上所有棋子的颜色一样为止,求最少翻多少次,方法是枚举递归.然后就打算先做另一道递归的题(从数组中取出n个元素的组合),但是同样在递归的问题上不太理解.好吧,于是复习CPP,在第229页的时候,看到了斐波那契数列,回想起之前做过的一道题目,发现可以用递归的方法来做.于是决定优化一下之前的代码. 以下这段摘自<C primer plus> 斐波那契数列的定义如下:第一个和第二个数字都
-
C语言实现Fibonacci数列递归
/* 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. */ #include<stdio.h> #include<stdlib.h> int N=10007; /*计算Fibonacci函数*/ int Fibonacci (int n) { int Fn; if (n==1 || n==2) { Fn=1; } else { Fn = (Fibonacci(
-
Go语言实现Fibonacci数列的方法
本文实例讲述了Go语言实现Fibonacci数列的方法.分享给大家供大家参考.具体如下: Fibonacci数列:1,1,2,3,5,8,13,21,,, (即从第三项起,每一项的值都等于前两项之后) 第一种,使用递归: 复制代码 代码如下: func fibonacci(a int) int { if a == 1 || a == 2 { return 1 } return fibonacci(a-1) + fibonacci(a-2) } 第
-
C语言求Fibonacci斐波那契数列通项问题的解法总结
一:递归实现 使用公式f[n]=f[n-1]+f[n-2],依次递归计算,递归结束条件是f[1]=1,f[2]=1. 二:数组实现 空间复杂度和时间复杂度都是0(n),效率一般,比递归来得快. 三:vector<int>实现 时间复杂度是0(n),时间复杂度是0(1),就是不知道vector的效率高不高,当然vector有自己的属性会占用资源. 四:queue<int>实现 当然队列比数组更适合实现斐波那契数列,时间复杂度和空间复杂度和vector<int&g
-
求斐波那契(Fibonacci)数列通项的七种实现方法
一:递归实现使用公式f[n]=f[n-1]+f[n-2],依次递归计算,递归结束条件是f[1]=1,f[2]=1.二:数组实现空间复杂度和时间复杂度都是0(n),效率一般,比递归来得快.三:vector<int>实现时间复杂度是0(n),时间复杂度是0(1),就是不知道vector的效率高不高,当然vector有自己的属性会占用资源.四:queue<int>实现当然队列比数组更适合实现斐波那契数列,时间复杂度和空间复杂度和vector<int>一样,但队列太适合这里了,
-
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
本文实例讲述了Python基于递归算法实现的汉诺塔与Fibonacci数列.分享给大家供大家参考,具体如下: 这里我们通过2个例子,学习python中递归的使用. 1. 找出Fibonacci数列中,下标为 n 的数(下标从0计数) Fibonacci数列的形式是这样的:0,1,1,2,3,5,8,13-- ① 使用while循环,python2代码如下: def fib(n): a,b=0,1 count=0 while count<n: a,b=b,a+b count=count+1 pri
-
C++中实现fibonacci数列的几种方法
目录 前言 一.fibonacci数列是什么? 二.递归实现 1.递归的特点 2.C++实现 三.循环实现 1.C++实现 2.时间复杂度 四.矩阵实现 1.理论推导 2.C++实现 3.时间复杂度 前言 fibonacci数列的实现主要有三种方法:递归.循环与矩阵.这里主要学习了如何在C++中实现这三种方法以及分析它们各自的时间复杂度. 本文参考文章如下:https://www.jb51.net/article/235674.htm 一.fibonacci数列是什么? 斐波那契数列(Fibon
-
C语言超细致讲解函数递归
目录 前言 什么是递归 递归的两个必要条件 题解递归 递归与迭代 练习题 结束语 前言 最近被函数递归困恼许久,今天就带领大家一起探秘递归. 什么是递归 程序调用自身的编程技巧称为递归( recursion). 递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接 调用自身的 一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解, 递归策略 只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量. 递归的主
-
Java基于高精度整型实现fibonacci数列的方法
本文以实例形式讲述了Java基于高精度整型实现fibonacci数列的方法,分享给大家供大家参考之用.具体方法如下: package com.java.learning.recursion; import java.math.*; public class MainClass { public static void main(String args[]){ for(int i = 0; i < 100; i++){ f(i+1); } } public static BigInteger f(
-
C++项目求Fibonacci数列的参考解答
[项目:求Fibonacci数列] Fibonacci数列在计算科学.经济学等领域中广泛使用,其特点是:第一.二个数是1,从第3个数开始,每个数是其前两个数之和.据此,这个数列为:1 1 2 3 5 8 13 21 34 55 89 --,请设计程序,输出这个数列,直到这个数字超过10000. [提示]数列可以表示为: [参考解答] #include <iostream> using namespace std; int main( ) { int f1,f2,fn,n; f1=f2=1; n
-
C语言 function recursion函数递归详解
目录 function recursion(函数递归) 递归的中心思想为: 程序一 递归的两个必要条件 程序一: 程序二: 练习 求n的阶乘 再来道例题 function recursion(函数递归) 函数递归: 是在 一个 过程 或 函数 在其定义或说明中有 直接 或 间接 调用自身 的一种方法 通常把一个 大型复杂的问题 层层 传化 为一个与 原理相似的 ,规模较小 的问题 递归策略 只需 少量的程序 就可以描述出 解题过程 所需的 多次 重复 计算,大大减少了程序的代码量 递归的中心思想
随机推荐
- docker连接spring boot和mysql容器方法介绍
- EXECUTE IMMEDIATE用法小结
- ASP.NET WebService中使用ASP.NET_SessionId的问题说明
- Python遍历文件夹和读写文件的实现方法
- Android编程实现长按弹出选项框View进行操作的方法
- 如何恢复MYSQL的ROOT口令
- Centos忘记mysql密码及允许远程连接的方法
- 一步步教你建立SQL数据库的表分区
- php使用cookie保存用户登录的用户名实例
- Web前端设计模式 制作漂亮的弹出层
- Java实现对中文字符串的排序功能实例代码
- Linux VPN pptpd构架方法
- C++ 中pragma once 与 #ifndef _XXX_H_ #define _XXX_H_的区别
- C#将制定目录文件名转换成大写的方法
- 详解Docker方式实现MySql 主从复制(实践篇)
- 红酒开了喝不完的保存方法
- Android 简单实现一个流式布局的示例
- 分析MySQL并发下的问题及解决方法
- 易语言做游戏辅助的方法
- 易语言高级表格选择任意行列获取内容的代码示例