網站首頁 編程語言 正文
前言
在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個斐波那契數的兩種思路,還進一步展示了代碼的運行結果驗證了作者的思路。
原文鏈接:https://blog.csdn.net/xjjxjy_2021/article/details/127637372
相關推薦
- 2021-11-03 Linux系統下grub.cfg文件損壞修復步驟_Linux
- 2023-02-15 Go語言中節省內存技巧方法示例_Golang
- 2023-03-17 Python控制windows系統音量實現實例_python
- 2022-08-29 .NET?Core自定義配置文件_實用技巧
- 2022-08-25 Python進階Matplotlib庫圖繪制_python
- 2022-12-06 Android?SwipeRefreshLayout超詳細講解_Android
- 2024-03-21 Springboot實現接口傳輸加解密
- 2022-02-27 Remove untracked files, stash or commit any change
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支