万门cpp课程作业:模板元编程实现fibinacci

C++模板元编程详细教程(之三) 《C++模板元编程详细教程》系列文章的第3篇,主要介绍的是模板的链接方式和模板的特化 阅读详情

第一个自己写的代码:

#include<iostream>


using namespace std;
template<double n>
struct fbonacci {
	enum {RET=fbonacci<n-1>::RET+fbonacci<n-2>::RET};
};

template<>
struct fbonacci<0>
{
	enum {RET=0.0};
};

template<>
struct fbonacci<1> {
	enum {RET=1.0};
};

int main() {
	cout << fbonacci<500>::RET << endl;
	system("pause");
	return 0;
}

自己改进的代码,没有问题:

// C++ Program to find n'th fibonacci Number 
#include<iostream> 
#include<cmath> 

int fib(int n) { 
double phi = (1 + sqrt(5)) / 2; 
return round(pow(phi, n) / sqrt(5)); 
} 

// Driver Code 
int main () 
{ 
int n = 9; 
std::cout << fib(n) << std::endl; 
return 0; 
} 
//This code is contributed by Lokesh Mohanty. 

#include<iostream>
using namespace std;
template <int n>
struct fbonacci {
	static constexpr const double RET=fbonacci<n-1>::RET+fbonacci<n-2>::RET;
};

template<>
struct fbonacci<0>
{
	static constexpr const double RET=0;
};

template<>
struct fbonacci<1> {
	static constexpr const double RET=1;
};

int main() {
	cout << fbonacci<500>::RET << endl;
	system("pause");
	return 0;
}

在这里插入图片描述

这篇文章对cpp模板编程讲解的很深刻。上面的答案也是按照里面的一个参考文献来写的。
cpp模板编程

C++模板元编程详细教程(之一) 《C++模板元编程详细教程》系列文章的第一篇,主要介绍了模板的概念以及基本的模板语法和相关示例。 阅读详情

相关推荐

C++模板元编程详解

C++模板是支持泛型编程的重要特性,允许编写与类型无关的代码,提升代码复用性和灵活性。模板分为函数模板和类模板,分别用于生成通用函数和类。模板参数包括类型参数、非类型参数和模板模板参数。模板实例化是编译器根据具体类型生成代码的过程,而模板特化则允许为特定类型提供特殊实现。模板元编程(TMP)利用模板在编译时进行计算或生成代码,结合constexpr、SFINAE、类型萃取、可变参数模板等技术,实现编译期计算和类型操作。

weixin_43484713的博客 1843

CPP-Templates-2nd--第 23 章 元编程

元编程的意思是“编写一个程序”。也就是说,我们构建了可以被编程系统用来产生新代码 的代码,而且新产生的代码实现了我们真正想要的功能。通常名词“元编程”暗示了一种自 反的属性:元编程组件是其将要为之产生一部分代码的程序的一部分(比如,程序中一些附 加的或者不同的部分)。为什么需要元编程?和其它编程技术一样,目的是用尽可能少的“付出”,换取尽可能多的 功能,其中“付出”可以用代码长度、维护成本之类的事情来衡量。元编程的特性之一是在 编译期间(at translation time,翻译是否准确?

qq_52758467的博客 275

C++模板元编程(C++ template metaprogramming)

本文就是要剖析 C++ 模板元编程的机制。C++ 模板是图灵完备的,这使得 C++ 成为两层次语言(two-level languages,中文暂且这么翻译,文献[9]),其中,执行编译计算的代码称为静态代码(static code),执行运行期计算的代码称为动态代码(dynamic code),C++ 的静态代码由模板实现(预处理的宏也算是能进行部分静态计算吧,也就是能进行部分元编程,称为宏元编程,见 Boost 元编程库即 BCCL,文献[16]和文献[1] 10.4)。

2401_86940371的博客 1796

C++高阶:元编程(Metaprogramming)--入门篇

c++模板元编程

heyuye110 1320

动态数据脱敏技术分析

在当前国内信息安全热潮中,数据脱敏作为数据安全的重要一环得到了业界的认可与重视。早在2012年,数据脱敏首次作为一个单独的魔力象限由Gartner发布,Gartner在2014年又提出了:按照数据使用场景,将数据脱敏分为静态数据脱敏(Static data masking-SDM )与动态数据脱敏(Dynamic data masking-DDM )。 可能有人望文生义,认为动态数据脱敏一定比静态数据脱敏高级。非也非也,静态or动态,取决于脱敏的使用场景,主要是以使用场景为由来选择合适的数据脱敏的模式。 本

美创科技的博客 4666

4 种方法识别Linux系统 USB 设备

导读 如果在系统中插入一个设备,尤其是在桌面环境下,比如 USB 设备,它会自动挂载到一个指定目录,一般是在 /media/username/device-label 目录下,之后你就可以进入到该目录下访问那些文件了。然而,在服务器上就不是这么回事了,你必须手动挂载这个设备,并且指定一个挂载点。 查询USB设备 Linux 系统使用 /dev 目录下特定的设备文件来标识插入的

郑帅的博客 1986

C++模板元编程入门

本文通过介绍C++中的模板元编程,让读者了解到什么是模板元编程、为何使用它以及如何使用C++模板实现元编程。将从C++模板的基础知识说起,逐步深入讲解模板元编程的概念、技术和应用,旨在帮助初学者快速入门并提升C++代码的可重用性、可维护性和可扩展性。

有求必应,有问必答(只要是我能解决的) 1933

Unity 2022.3.3 LTS + Visual Studio 2022:手把手教你复刻《吸血鬼幸存者》核心战斗(附完整项目源码)

本文详细介绍了如何使用Unity 2022.3.3 LTS和Visual Studio 2022从零构建《吸血鬼幸存者》式战斗系统。通过图文开发教程,涵盖对象池优化、ECS架构雏形、2D物理碰撞控制等关键技术,帮助开发者高效复刻这款热门游戏的自动攻击与海量刷怪机制。

weixin_30721077的博客 458

C++模板写法详解

C++模板写法详解。

m0_51683386的博客 994

SAP-PM设备模块-PM主数据之维护策略

预防性维护的一种计划方式,需要先建立维护策略什么情况下需要创建维护策略?

TRUIXIANG的博客 2569

第67步 时间序列建模实战:ARIMA建模(Stata)

第67步 时间序列建模实战:ARIMA建模(Stata)

Jet4505的博客 6819

2024年C C++最全Fibonacci sequence及相关问题介绍_fibinacci序列遇到的问题,C C++最新大厂面试真题总结

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以添加戳这里获取一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!Fibonacci sequence, the sequence of numbers 1, 1, 2, 3, 5, 8, 13, 21, …, each of

2401_84976377的博客 454

车载以太网网络测试-24【SOME/IP概述】

SOME/IP**(Scalable Service-Oriented Middleware over IP)是一种基于IP网络的面向服务的通信协议,专为汽车电子系统设计,支持服务发现、远程过程调用(RPC)和事件通知等功能。核心标准是由 AUTOSAR(汽车开放系统架构)定义,现已成为车载通信的重要标准之一(如AUTOSAR 4.0+)。SOME/IP的全称是,它是一种基于IP网络的面向服务的通信协议,广泛应用于汽车电子(AUTOSAR)和物联网领域。Scalable(可扩展的)含义。

车载网络测试工程师的博客 2186

2024年最全Fibonacci sequence及相关问题介绍_fibinacci序列遇到的问题(1),【大牛系列教学

这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

2401_84976195的博客 354

告别 DEFINE VIEW:CDS View Entity 迁移全景实战(报表迁移 + ADT 向导 + 避坑清单)

CDS迁移的关键要点与策略 CDS DDIC-based View已被标记为废弃,迁移到CDS View Entity成为必要。迁移面临的主要挑战包括激活成本、命名约束和依赖风险。ABAP 7.57及以上版本必须优先处理,否则将积累技术债务。 迁移方式主要有两种: 报表路线:适合渐进式迁移的On-Premise项目 ADT向导:适合云环境批量迁移 关键注意事项: 必须提前检查SQL View依赖关系 金额/数量字段需要显式引用单位/货币字段 建议按使用场景分批迁移 最佳实践是结合报表进行系统盘点,再通过AD

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 208

Flink实战(101):双流join(三)双流中实现Inner Join、Left Join与Right Join

声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。 《2021年最新版大数据面试题全面开启更新》 简介 之前文章中提到JoinedStream与CoGroupedStream,例如下列代码: dataStream.join(otherStream) .where(0).equalTo(1) .window(TumblingEventTimeWindows.of(Time.seconds(3))) .apply { ... } 由于joinedStream与

微信搜:import_bigdata,大数据领域硬核原创作者 736

用数组来处理求Fibinacci数列问题(一维数组)P----143 例6.2

/* Note:Your choice is C IDE */ #include “stdio.h” void main() {     int i,a[20];     a[0]=1;     a[1]=1;     for(i=2;i<20;i++){  &n...

hey,欢迎浏览我的博客,希望能给你提供帮助。 375

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

第十三周上机任务1:Fibnacci序列

/* * 程序的版权和版本声明部分 * Copyright (c)2012, 烟台大学计算机学院 * All rightsreserved. * 文件名称:fibnacci.cpp * 作 者:李巧丽 * 完成日期:2012年11月20日 *

李巧丽 956

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

斐波那契数列(复习)

描述 斐波那契(Fibinacci)数列是这样一个数列:1、1、2、3、5、8、13、21、……, 这个数列前两项是1,从第二项开始,每一项都等于前两项之和。 编程输出Fibinacci数列的前20项。5个数一行。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬ 输入输出示例 输入 输出 示例 1

weixin_61009782的博客 2690

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

斐波那契数列

题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 class Solution { public: int Fibonacci(int n) { int result[2]={0,1}; if (n<2) {return result[n];} ...

qq_35692267的博客 99

1sting+大fibonacci数列求和

1sting Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2237    Accepted Submission(s): 883 Problem Description You will be given a stri

wenlovingliu的专栏 745

斐波那契查找出现的问题及解决方法

先看看斐波那契查找方法 斐波那契数列 1 1 2 3 5 8 13 21 … 斐波那契数列 的前一项f[k-1]/f[k] 随着k越来越大,这个值逐渐趋近黄金分割点0.618 如果查找的数据长度等于斐波那契数列的某一项数。则可以直接进行查找,否则 就需要将查找目标数组进行扩列,扩列数用目标数组高位填充 假设目标数组 1,2,3,4,5,6 数据长度为6 那么就需要进行扩列到8 即 1,2,3,4,5,6,7,8 由于f[k] = f[k-1]+f[k-2] 8 = 3 +5 则查找就分为前5后3,以此类推*

混合编程 797

浅谈 C++ 元编程

随着 C++ 11/14/17 标准的不断更新,C++ 语言得到了极大的完善和补充。元编程作为一种新兴的编程方式,受到了越来越多的广泛关注。结合已有文献和个人实践,对有关...

腾讯技术工程 5670

C/C++程序开发(01):斐波那契数列(不使用递归的快速算法)

  void fabnacii(int n, int&amp; fn) { if (n == 1) { fn = 1; } else if (n == 2) { fn = 1; } else if (n &gt; 2) { int* Fabnacci = new int[n]; Fabnacci[0] = 1; Fabnacci[1] = 1; for (int i = 2; i &lt; n...

m1m2m3mmm的博客 1793

C/C++语言基础--C++模板与元编程系列七,元编程三种编程方式

🤗 循环结构一般结构递归实现,不用while、for这样的循环,以类为对象(struct、class),不直接定义函数👼 实现一个斐波那契数列计算// 定义主模板// 定义特化模板// 定义特化// 定义主训练int main()return 0;

羊小猪~~的博客 1381
上一篇: 七月cv_作业1:读入文本数字图像
下一篇: 折线图:factorplot
dlvector
博客等级 码龄10年 85粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值