前言
- 个人推荐在牛客网刷题(点击可以跳转),它登陆后会保存刷题记录进度,重新登录时写过的题目代码不会丢失。
- 个人刷题练习系列专栏:个人CSDN牛客刷题专栏。 题目来自:牛客/题库 / 在线编程 / 剑指offer:
问题描述:
- 大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。
斐波那契数列是一个满足的数列:
- 数据范围:1≤n≤40
- 要求:空间复杂度 O(1),时间复杂度 O(n) ,本题也有时间复杂度 O(logn) 的解法
- 输入描述:
一个正整数n- 返回值描述:
输出一个正整数。
举例:
//示例1:
//输入:
4
//返回值:
3
//说明:根据斐波那契数列的定义可知,fib(1)=1,fib(2)=1,fib(3)=fib(3-1)+fib(3-2)=2,fib(4)=fib(4-1)+fib(4-2)=3,所以答案为3。
//==========================
//示例2:
//输入:
1
//返回值:
1
//==========================
//示例3:
2
//返回值:
1
解法思路:
- 利用循环控制语句模仿斐波那契数列增殖的过程
代码结果:
/**
*
* @param n int整型
* @return int整型
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
int Fibonacci(int n ) {
// write code here
int a[50];
a[1]=1,a[2]=1;
for(int i=3;i<n+1;i++)
{
a[i]=a[i-1]+a[i-2];//这里一定要避免出现a[-1]等的情况
}
return a[n];
}
结束语
- 以上就是该C语言编程题的内容。可以在牛客尝试刷几道题目来练习实践。牛客网刷题(点击可以跳转),可以尝试注册使用。
- 题目来自:牛客/题库 / 在线编程 / 剑指offer: