c编程:求Fibonacci数列的两种方式。

一种是输入一个整数n,则程序输出在n位置上的Fibonacii数字:

#include<stdio.h>

int Fibo(int n)
{
	if(n==1||n==2)
		return 1;
	return Fibo(n-1)+Fibo(n-2);
}
int main()
{
	int n;
	scanf("%d",&n);

	printf("%d\n",Fibo(n));
	return 0;
}

一种是保存在数组中以便输出:

#include<stdio.h>

int main()
{
	int i;
	int f[20]={1,1};//f[0]=f[1]=1,其余为0
	for(i=2;i<20;i++)
	{
		f[i]=f[i-1]+f[i-2];//循环赋值并存到f数组中
	}
	for(i=0;i<20;i++)
	{
		if(i%5==0)printf("\n");
		printf("%12d",f[i]);
	}

	printf("\n");
	return 0;
}

时间: 2024-08-06 20:03:52

c编程:求Fibonacci数列的两种方式。的相关文章

fibonacci数列的两种求解方式:基础递归VS动态规划

/* * 基础解法,按照递归方法求解,该算法的运算时间是指数级增长的 * 这种算法对于相似的子问题进行了重复的计算,因此不是一种高效的算法 */ public class FibonacciRecursion { //-----------计算Fibonacci数列值的递归函数-------------- public static int fib(int n){ if(n==1||n==2){//序列中第1,2个数为1 return 1; } return fib(n-1)+fib(n-2);

7 并发编程-(线程)-开启线程的两种方式

thread/英 /θred/ 美 /θr?d/  线程 1.threading模块介绍 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性,因而不再详细介绍 2.开启线程的两种方式 2.1.方式一 from threading import Thread import time def task(name): print(f"{name} is running") time.sleep(2) print(f"{name} i

5.1.2 网络编程进阶---开启子进程的两种方式

当主进程开启子进程后,主进程会与子进程并行执行.当主进程执行后不会立马结束进程,而是会等子进程结束才结束,好去清理僵尸子进程(给子进程收尸). 第一种方式: from multiprocessing import Processimport time def task(name): print('%s is running' % name) time.sleep(3) print('%s is done' % name) if __name__ == '__main__': p = Proces

《多线程编程》——创建线程的两种方式

1.目的 创建线程,即拿到一个线程实例.这个线程实例必须具备开启.等待.唤醒等控制自身生命周期的方法. 2.创建Thread线程 方式一:new Thread().new Thread(String name) 1 /** 2 *两个构造器也有区别:线程名不同 3 */ 4 public class Thread implements Runnable { 5 private char name[]; 6 7 //1.不带参 8 /* 9 *Automatically generated nam

HDU 1213 How Many Tables (并查集,连通分支数,两种方式)

How Many Tables Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 23012    Accepted Submission(s): 11485 Problem Description Today is Ignatius' birthday. He invites a lot of friends. Now it's din

求Fibonacci数的三种方法和时间复杂度解析

题目: 定义Fibonacci数列如下: f(0)=1 f(1)=1 f(n)=f(n-1)+f(n-2), n>=2 输入n,用最快的方法求该数列的第n项. 解答一: 直接用公式写递归函数.很简单,很低效,就不写了.时间复杂度T(N) = T(N-1) + T(N-2); 也是f(n)本身,2^(n/2)<f(n)<2^n. 解答二: 用循环求,也很直接,效率很高了,时间复杂度是O(n). int f(int n) { if(n <= 1) return 1; int f0=1,

c语言:用数组来处理求Fibonacci数列问题

用数组来处理求Fibonacci数列问题. 解:程序: #include<stdio.h> int main() { int i, f[20] = { 1,1 };//对最前面两个元素f[0]和f[1]赋初值1 for (i = 2; i < 20; i++) { f[i] = f[i-2]+f[i-1];//先后求出f[2]~f[19]的值 } for (i = 0; i<20; i++) { if (i % 5 == 0)//控制每输出5个数后换行 { printf("

C++项目参考解答:求Fibonacci数列

[项目:求Fibonacci数列] Fibonacci数列在计算科学.经济学等领域中广泛使用,其特点是:第一.二个数是1,从第3个数开始,每个数是其前两个数之和.据此,这个数列为:1 1 2 3 5 8 13 21 34 55 89 --,请设计程序,输出这个数列,直到这个数字超过10000. [提示]数列可以表示为: {f1=f2=1fn=fn?1+fn?2,n>2 [参考解答] #include <iostream> using namespace std; int main( )

Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition

在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权.因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就不会让队列有空间,那么生产者就会一直无限等待下去.因此,一般情况下,当队列满时,会让生产者交出对临界资源的占用权,并进入挂起状态.然后等待消费者消费了商品,然后消费者通知生产者队列有空间了.同样地,当