C语言练习之求第n个斐波那契数

简介: C语言练习之求第n个斐波那契数

前言

在C语言中,分别用递归和非递归两种方法实现求第n个斐波那契数

一、思路

首先分析一下关于斐波那契数列的原理:

第一个和第二个数都是1,之后的每个数都是前两个数之和,即:

1,1,2,3,5,8,……

1.非递归

用到了循环相关的知识,

当n>2的时候进入循环,将前两个数相加得到第三个数;

当n<=2的时候跳出循环。

2.递归

观察斐波那契数列可以得到一个公式:

根据这个公式就能进行递归。当n>2的时候进行递归,当n = 1或n = 2时返回1。

二、源代码以及运行截图

为了方便大家的交流和学习,我将程序源代码和运行截图放置在下方。

非递归:

源代码:

#include<stdio.h>
//递归和非递归分别实现求第n个斐波那契数
//非递归
int main()
{
  int i = 1;
  int j = 1;
  int temp = 0;
  int n = 0;
  int fib = 0;
  scanf("%d", &n);
  while (n > 0)
  {
    if (n > 2)
    {
      temp = j;
      j = i + j;
      i = temp;
    }
    else 
      fib = j;
    n--;
  }
  printf("%d", fib);
  return 0;
}

运行截图:

递归:

源代码:

//递归
int Fib(int n)
{
  if (n > 2)
  {
    return Fib(n - 1) + Fib(n - 2);
  }
  else 
  {
    return 1;
  }
}
int main()
{
  int n = 0;
  scanf("%d", &n);
  while (1)
  {
    if (n <= 0)
    {
      printf("输入错误请重新输入:>");
    }
    else
    {
      printf("%d\n", Fib(n));
      break;
    }
  }
  return 0;
}

运行截图:


总结

 以上就是今天要讲的内容,本文简单的介绍了用C语言如何求解第n个斐波那契数的两种思路,还进一步展示了代码的运行结果验证了作者的思路。

本文的作者也只是一个正在学习C语言等编程知识的萌新,若这篇文章中有哪些不正确的内容,请在评论区向作者指出(也可以私信作者),欢迎大佬们指点,也欢迎其他正在学习C语言的萌新和作者进行交流。

最后,如果本篇文章对你有所启发的话,也希望可以支持支持作者,后续作者也会定期更新学习记录。谢谢大家!

相关文章
|
2月前
|
C语言
C语言练习5
C语言练习5。
12 2
|
2月前
|
机器学习/深度学习 人工智能 C语言
【c语言基础题】— —第五版,可当作日常练习和期末复习,有奇效哟!
【c语言基础题】— —第五版,可当作日常练习和期末复习,有奇效哟!
42 1
|
2月前
|
算法 Java C语言
【c语言基础题】— —第一版,可当作日常练习和期末复习,有奇效哟!
【c语言基础题】— —第一版,可当作日常练习和期末复习,有奇效哟!
78 0
|
2月前
|
程序员 C语言 CDN
【c语言基础题】— —第三版,可当作日常练习和期末复习,有奇效哟!
【c语言基础题】— —第三版,可当作日常练习和期末复习,有奇效哟!
78 0
|
2天前
|
C语言
C语言 浙大版《C语言程序设计(第3版)》题目集 练习8-8 移动字母 (10分)
C语言 浙大版《C语言程序设计(第3版)》题目集 练习8-8 移动字母 (10分)
|
2天前
|
C语言
浙大版《C语言程序设计(第3版)》题目集 练习8-2 计算两数的和与差 (10分)
浙大版《C语言程序设计(第3版)》题目集 练习8-2 计算两数的和与差 (10分)
|
5天前
|
存储 算法 C语言
C语言进阶:顺序表(数据结构基础) (以通讯录项目为代码练习)
C语言进阶:顺序表(数据结构基础) (以通讯录项目为代码练习)
|
6天前
|
C语言
换硬币问题(C语言代码练习)
换硬币问题(C语言代码练习)
|
29天前
|
机器学习/深度学习 人工智能 算法
二级C语言选择题练习附答案
二级C语言选择题练习附答案
|
2月前
|
编译器 C语言
拒绝摆烂!C语言练习打卡第七天
拒绝摆烂!C语言练习打卡第七天