Lucas 数列:1, 3, 4, 7, 11, 18, 29, 47, 76, 123...

法一

#include<iostream>
#include<cmath>
using namespace std;
long long int Lucas(int n)//定义函数
{long long int result,a=1,b=3,c;if (n==1)return a;//定义第一 项 else if (n==2)return b;//定义第二项 else{for (int i=3;i<=n;i++){c=a+b;result=c;//求第三项 a=b;//将第二项的值赋予a b=c;//将第三项的值赋予b }}return result;//返回结果
}
int main()
{int m;cout<<"输入一个整数:";cin>>m;cout<<"该处的Lucas值是:"<<Lucas(m);return 0;
}

法二

#include<iostream>
#include<cmath>
using namespace std;
long long int Lucas(int n)
{int result,a=1,b=3;if (n==1)return a;else if (n==2)return b;elsereturn Lucas(n-2)+Lucas(n-1);
}
int main()
{int m;cout<<"输入一个整数:";cin>>m;cout<<"该处的Lucas值是:"<<Lucas(m)<<endl;return 0;
}

递归 Lucas 函数的调用次数

改进前面的递归 Lucas 函数,使之能够记录被调用次数

利用改进的函数,计算 Lucas 数列的第 30 项,并统计此时函数被调用了多少次

如果计算 Lucas 数列的第 50 项呢?存在什么问题?怎么解决这个问题?

#include<iostream>
#include<cmath>
#include<stdlib.h>
#include<iomanip>
using namespace std;
long long int d=0;
long long int Lucas(int n)
{d++;//定义一个项数int result,a=1,b=3,c;if (n==1)return a;else if (n==2)return b;elsereturn Lucas(n-2)+Lucas(n-1);
}
int main()
{int m;cout<<"输入一个整数:";cin>>m;cout<<"该处的Lucas值是:"<<Lucas(m)<<endl;cout<<"调用次数n="<<d<<endl; //显示项数return 0;
}

运行50项函数被调用次数过多,运行速度慢,可能会产生溢出。

解决方法:1.用非递归法进行计算。

2.换用数据类型。

用C++编写函数,分别用非递归和递归计算 Lucas 数列第 n 项相关推荐

  1. C++第七次作业(函数_递归与非递归_多文件)

    文章目录: 一:C++递归与非递归实现整数的阶乘 代码实现 运行结果 二:C++递归与非递归实现Fibonacci数列的计算:a0=1; a1=1; a2=a0+a1; a3=a1+a2; ..... ...

  2. 二叉树非递归先序遍历

    二叉树的递归先序遍历很简单,假设二叉树的结点定义如下: 1 struct BinaryTreeNode 2 { 3 int m_nValue; 4 BinaryTreeNode* m_pLeft; 5 ...

  3. 二叉树的链式结构的非递归遍历

    二叉树的链式结构的非递归遍历 一. 非递归前序遍历和非递归中序遍历 1.    Stack.h #ifndef__STACK_H__ #define__STACK_H__ #include<st ...

  4. 非递归实现二叉树(前序,中序,后序)c/c++实现

    这里还是用到栈的思想,为了方便用了c++的一些内容,把出栈,进栈,读栈顶元素用一个个函数封装起来了,前面做了一些处理来使用这些函数. 前序非递归 思想:一直走左边,依次进栈.等左边为空的时候,返回,也 ...

  5. 数据结构基础篇-链表反转(非递归与递归)C++实现

    链表反转C++代码,附加打印逆序链表(不进行反转)代码. 测试用例: 5 2 3 4 10 5 1 4 1.非递归实现 思路:需要三个指针p1.p2.p3,分别指向上一个节点.当前节点与缓存的下一个节 ...

  6. 将递归函数转换为非递归形式

    转自 :https://blog.csdn.net/sunny_ss12/article/details/47095381 1. 递归的调用原理:分而治之 为求一个大规模问题的问题,可以: (1)将原 ...

  7. C语言—递归函数 用递归方法编程计算输出Fibonacci数列,同时打印出计算Fibonacci数列每一项时所需的递归调用次数。

    用递归方法编程计算输出Fibonacci数列,同时打印出计算Fibonacci数列每一项时所需的递归调用次数. **输入格式要求:"%d" 提示信息:"Input n:& ...

  8. 编写函数 int fac(int x)计算 x!的值。在主函数中输入 n 和 m 的值,通过调用函数 fac 计算m Cn 的值(要求分别用递归和非递归的方法编写函数 fac)

    编写函数 int fac(int x)计算 x!的值.在主函数中输入 n 和 m 的值,通过调用函数 fac 计算m Cn 的值(要求分别用递归和非递归的方法编写函数 fac) 递归: #includ ...

  9. c语言中fact函数怎么调用,C语言程序题: 1、编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现...

    点击查看C语言程序题: 1.编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现具体信息 答:int fac(int n) //非递归{int f=1; for(;n;) ...

最新文章

  1. Mybatis:颠覆你心中对事务的理解
  2. JAVA的两个FTP包的比较
  3. mysql删除redo_删除redo log group or member
  4. 【STM32】 keil软件工具--工程目标选项配置(下)
  5. apache 静态编译和动态编译参考
  6. linux accept过程,Linux协议栈accept和syn队列问题
  7. .NET框架程序设计
  8. 找call的万能方法,一招通杀所有网络游戏【个人实践出来的】
  9. wordpress如何压缩HTML代码
  10. 10G网络布线方案有多少种?
  11. springboot实现微信退款
  12. 服务器安装esxi系统
  13. 如何识别服务器连接的偶发故障?
  14. Python Pandas缺省值(NaN)处理
  15. 一个例子说明贝叶斯定理
  16. AI芯片:寒武纪DianNao,英伟达NVDLA和谷歌TPU1的芯片运算架构对比分析
  17. AJP:有和没有内化性精神障碍的受虐女孩情绪回路延迟成熟的差异性
  18. js获取当天0时刻,23点59分59秒的时间戳
  19. 【NDN基础】Named Data Networking 全文翻译
  20. mpu6050六轴传感器msp430驱动程序

热门文章

  1. Java、JSP+BBS论坛系统的设计与实现
  2. Mysql数据库的单表查询
  3. CAcls命令在提权中的使用
  4. 有利可图网_您的基于云的应用程序可能是有利可图的产品
  5. 为什么大学还在教过时的软件技术,程序员:只能说你根本不懂软件
  6. Hyper-V相关Powershell cmdlets
  7. Commander入门
  8. 哔咔服务器无响应,哔咔哔咔漫画进不去怎么办 无法进入解决办法
  9. 自建团队app公司外包免编程app打包平台优缺点分析
  10. 警惕!国内已有5000余个网站中招!关于一种大规模的暗链劫持流量的风险提示