0
点赞
收藏
分享

微信扫一扫

【C语言刷题集】求一个数最少几步可以变成斐波那契数4

1.什么是斐波那契数

【C语言刷题集】求一个数最少几步可以变成斐波那契数4_斐波那契数列

斐波那契数列(Fibonacci sequence),又称​​黄金分割​​数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)

2.题目

给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。

输入描述:

输入为一个正整数N(1 ≤ N ≤ 1,000,000)

输出描述:

输出一个最小的步数变为Fibonacci数"

#include <stdio.h>
int main()
{
int N = 0;
scanf("%d", &N);
int a = 1;
int i = 1;
int j = 0;
while (1)
{
j = a;
a +=j;
if (a > N)
break;
}
a += 1;
int tem = (a - N) < (N - j) ? (a - N) : (N - j);
printf("%d", tem);
return 0;
}

题目的思路很简单,一个数N肯定在两个斐波那契数之间,我们只要一直求斐波那契数,直到比他大的那一个数据出现,然后比较他跟较小的数还是较大的数大小即可

程序中使用了一个比较大小的三目操作符

数值1<数值2?数值1:数据2

也就是说数值1<数值2的话会返回:左边的值。

举报

相关推荐

0 条评论