用递归求斐波那契数

斐波那契数是第一个数和第二个数都为1,从第三个数开始,后面的是是前面相邻两个数的和。定义的函数如下所示:

int fib(int m)
{
    if (m == 1 || m == 2)
        return 1;
    else
    {
        return  (fib(m - 1) + fib(m - 2));
    }
}

if语句为了确定第一位和第二位都为1,。完整的代码如下所示:

#include <stdio.h>
#include <stdlib.h>
int fib(int m)
{
	if (m == 1 || m == 2)
		return 1;
	else
	{
		return  (fib(m - 1) + fib(m - 2));
	}
}
int main()
{
	int m = 1; int n = 1; int i; int Fib = 1;//定义前两个数为m,n初值都为1
	printf("%8d", m);
	printf("%8d", n);
	for (i = 3; i <= 30; i++)//只打印前30个
	{
		Fib = m + n;
		n = m;
		m = Fib;
		printf("%8d", Fib);
		if (i % 5 == 0)
			printf("\n");
	}
	printf("\n");
	printf("\n"); 
	for (i = 1; i <= 30; i++)//只打印前30个
	{
		printf("%8d", fib(i));
		if (i % 5 == 0)
			printf("\n");
	}
	printf("\n");
	system("pause");
	return 0;
}

在main函数中,用两种方法打印了斐波那契数,第一种是普通的方法,而第二种调用了递归函数。

if(i%5==0) 

    printf("\n");是为了每五位打印一个换行,这样看起来整齐。

【问题描述】 【问题描述】编写函f,功能是用递归方法斐波那契数列的第n项,函原型为 int f(int n),在主函中输入一个正整n,调用函f斐波那契数列的第n项,并在主函中输出。 斐波那契数列1,1,2,3,5,8,13,21…… 【输入形式】3 【输出形式】2 【样例输入】6 【样例输出】8 【问题描述】编写函f,功能是用递归方法斐波那契数列的第n项,函原型为 int f(int n),在主函中输入一个正整n,调用函f斐波那契数列的第n项,并在主函中输出。 斐波那契数列1,1,2,3,5,8,13,21…… 【输入形式】3 【输出形式】2 【样例输入】6 【样例输出】8 【问题描述】编写函f,功能是用递归方法斐波那契数列的第n项,函原型为 int f(int n),在主函中输入一个正整n,调用函f斐波那契数列的第n项,并在主函中输出。 斐波那契数列1,1,2,3,5,8,13,21…… 【输入形式】3 【输出形式】2 【样例输入】6 【样例输出】8 【问题描述】编写函f,功能是用递归方法斐波那契数列的第n项,函原型为 int f(int n),在主函中输入一个正整n,调用函f斐波那契数列的第n项,并在主函中输出。 斐波那契数列1,1,2,3,5,8,13,21…… 【输入形式】3 【输出形式】2 【样例输入】6 【样例输出】8 斐波那契数列1,1,2,3,5,8,13,21…… 【输入形式】3 【输出形式】2 【样例输入】6 【样例输出】8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值