输入一个数字,通过++或者--将其变为Fiboncci数,最小需要几步???
2021/4/26 10:28:18
本文主要是介绍输入一个数字,通过++或者--将其变为Fiboncci数,最小需要几步???,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
thinking:
1.Fibonacci ,那就得把Fibonacci数表达出来;
method_1:用递归;
method_2: 用数字相加;
2.想得到最小步数,就得求出最接近的Fibonacci数;method_1: 通过递归求出,通过判断递归出数的值,与输入值比较,锁定左右两值;
method_2: 通过两变量相加等于较大值较小值等于原来较大值,较大值大于输入值时,即两变量为左右两值;
3.通过判断左右两值与输入值相减的绝对值大小,较小的为最小步数;method_1:用较大值减输入值,输入值减去较小值;
method_2:直接用用绝对值(abs);
//method 1 #include<iostream> using namespace std; //写出递归 int Fiboncci(int n) { if(n<=1) return n; if(n>1) return Fibonacci(n-1)+Fibonacci(n-2); } //写出比较值 int _compare(int num,int lesser,int larger) { int step=num-lesser; if(step>(larger-num)) step=larger-num; return step; } int main() { int num,lesser,larger; cin>>num; //从最小开始用递归计算出每个Fibonacci数; for(int i=0;i<num;++i) { lesser=Fibonacci(i); larger=Fibonacci(i+1); //进行判断 if(larger>num) break; } int step=_compare(num,lesser,larger); cout<<step<<endl; return 0; }
//method 2: #include<iostream> using namespace std; int main() { int lesser=0,larger=1; while(larger<num) { int temp=larger; larger=lesser+larger; lesser=temp; } int step=num-lesser; if(step>larger-num) step=larger-num; return step; }
这篇关于输入一个数字,通过++或者--将其变为Fiboncci数,最小需要几步???的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-29Elasticsearch慢查询日志配置
- 2024-05-29揭秘华为如此多成功项目的产品关键——Charter模板
- 2024-05-29海外IDC业务拓展的7大挑战
- 2024-05-29InLine Chat功能优化对标Github Copilot,CodeGeeX带来更高效、更直观的编程体验!
- 2024-05-29CodeGeeX 智能编程助手 6 项功能升级,在Visual Studio插件市场霸榜2周!
- 2024-05-29AutoMQ 生态集成 Apache Doris
- 2024-05-292024年IDC行业的深度挖掘:机遇、挑战与未来展望
- 2024-05-29五款扩展组件齐发 —— Volcano、Keda、Crane-scheduler 等,邀你体验
- 2024-05-29AutoMQ 对象存储数据高效组织的秘密: Compaction
- 2024-05-29活动预告|来 GIAC 大会听大数据降本利器:AutoMQ 基于云原生重新设计的 Kafka