Codeup-Fibonacci数列

题目描述

输入一个正整数n,求Fibonacci数列的第n个数。Fibonacci数列的特点:第1,2个数为1,1。从第3个数开始,概述是前面两个数之和。即:

要求输入的正整数n不超过50.

输入

一个不超过50的正整数

输出

Fibonacci数列的第n个数,末尾输出换行。

样例输入

20

样例输出

6765

错误代码!!!

        刚开始写,想利用函数,在外部写一个Fibonacci(n),然后递归调用,但是这里每一次都会输出一个数字,而不是累加到所需要的数字。

#include "pch.h"
#include <stdio.h>
#include <math.h>

int Fibonacci(int n)
{
	int f;
	if (n == 1 || n == 2)
		f = 1;
	else
		f = Fibonacci(n - 1) + Fibonacci(n - 2);
	printf("%d", f);
	return 0;
}

int main()
{
	int n,f;
	scanf_s("%d", &n);
	if (n <= 50)
		Fibonacci(n);
	return 0;
}

正确代码:(利用函数)

#include <stdio.h>
#include <math.h>

int Fibonacci(int n)
{
	int f;
	if (n == 1 || n == 2)
		return 1;
	else
		return Fibonacci(n - 1) + Fibonacci(n - 2);
}

int main()
{
	int n,f;
	scanf_s("%d", &n);
	if (n <= 50)
		printf("%d",Fibonacci(n));
	return 0;
}

 

利用循环结构求解前n项的数列和:

#include <stdio.h>

int main()
{
	int i, n, f1=1, f2=1, f3;
	scanf_s("%d", &n);
	if (n > 2 && n <= 50)
	{
		for (i = 3; i <= n; i++)
		{
			f3 = f1 + f2;
			f1 = f2;
			f2 = f3;
		}
		printf("%d", f3);
	}
	if (n == 1 || n == 2)
		printf("%d", f1);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/Zizizi9898/article/details/88098585