技术标签: 递归 C语言 c语言 优化 函数 Fibionacci
Fibionacci数列有如下特点:前两个数都为1,从第三个数开始,该数是前两个数之和。
即:
F1=1;(n=1)
F2=1;(n=2)
Fn=Fn-1+Fn-2;(n>2)
下面给出几种求法:
解法一:
#include <stdio.h>
int fib(int n)
{
int fib1 =1;
int fib2 =1;
int fib = 1;
int i = 0;
while (n > 2)
{
fib1 = fib1 + fib2;
fib2 = fib1 - fib2;
n--;
}
return fib1 ;
}
int main()
{
int n = 0;
int ret =0;
printf("请输入要求 Fibionacci 数列的第几个数:\n");
scanf("%d", &n);
ret = fib(n);
printf("%d \n", ret);
system("pause");
return 0;
}
解法二:
int fib(int n)
{
int fib1 =1;
int fib2 =1;
int fib = 1;
int i = 0;
while (n > 2)
{
fib = fib1 + fib2;
fib1 = fib2;
fib2 = fib;
n--;
}
return fib ;
}
测试方法同上,这里不再重复写
解法三:
除了上述方法外,还可以使用递归的方式
int fib(int n)
{
if (n <= 2)
return 1;
else
{
return fib(n - 1) + fib(n - 2);
}
}
但是请注意,递归的方法虽然代码简单,可读性强,但不是最好的办法,因为在递归调用时涉及到运行时开销,参数必须被压到堆栈,为局部变量分配内存空间,当递归太深时,会出现栈溢出。对于这个程序而言,当所求n较大时,递归函数并不会简化问题。
文章浏览阅读1.9k次。使用arm-linux-androideabi-readelf读取信息:arm-linux-androideabi-readelfUsage: readelf elf-file(s) Display information about the contents of ELF format files Options are: -a --all Equi_mac arm-linux-androideabi-readelf
文章浏览阅读1.1k次。java 模板方法 实现二维码生成 并进行二维码白边自定义的裁剪:由于自己最近在学设计模式,就想着如何能运用到自己工作的项目中。找了半天,想起自己之前写的一段关于生成二维码图片的代码。后面由于同事的需求不同,他们在里面添加了一下其它逻辑的代码。现在感觉这段代码已经不太好被扩展维护了。于是就用选择了设计模式中的模板方法重新进行设计。package **;import java.awt.Re..._裁剪二维码的白边
文章浏览阅读608次。IntelliJ IDEA创建maven web项目不妨先了解下Maven 项目是什么什么是maven项目?简单来说,就是maven工具构建的项目就是maven项目。maven是一个跨平台的项目管理软件。为什么要用maven构建项目?当你的项目很大,当你需要模块化拆分,部署,当你的jar包乱的跟粥似的,开发人员使用jar冲突等等问题出现时……你用maven就是合适的,但前...
文章浏览阅读3.1k次,点赞2次,收藏10次。一.概述HAN(Hierarchical Attention Networks for Document Classification),层次化注意力机制等,是Zichao Yang等2016年提出的一种新型文本分类模型。它主要使用词(字)语级别,和句子级别的注意力机制Attention,构建文本特征表示,层次化文本(即字、词、句子),十分符合人类直觉,也是近年来图像、NLP等..._中文短文本模型
文章浏览阅读619次。--配置权限 exec sp_configure 'show advanced options',1reconfigureexec sp_configure 'Ad Hoc Distributed Queries',1reconfigureexec sp_configure 'xp_cmdshell',1reconfigurego
文章浏览阅读2.4k次。Airtest工具安装教程最近需要获取某些手机APP的输入下拉框词,所以需要控制手机,并获取信息。这里记录一下安装流程,以防以后忘记。步骤1. 安装JDK因为之前安装别的包(hanlp), 所以已经安装过JDK了。2. 安装SDK我下载http://tools.android-studio.org/index.php/sdk下载好了,到安装目录,运行SDK Manager.exe勾选 Android SDK Platform-tools,点右下角的install。注意需要翻墙。最后_安装airtesttool
文章浏览阅读3w次,点赞8次,收藏60次。validation_data中包含了 幅数字图像,这些图像和训练数据集中的 幅图像以及测试数据集中的 幅都不相同。我们会使用 validation_data 来防止过匹配。我们会使用和上面应用在 test_data 的策略。我们每个回合都计算在 validation_data 上的分类准确度。一旦分类准确度已经饱和,就停止训练。这个策略被称为 提前停止(Early stopping)。当然,实际..._validation_data
文章浏览阅读128次。答题技巧第一章 Java编程基础1,方法是一种定义了某种具体抽象的运算。利用具有属性和行为的类,java实现了抽象。行为有抽象的操作来定义。2,对象是类的实例。对象根据实现抽象的类定义来创建。所以创建对象的那些抽象的具体实现。3,对象通常是通过new运算符创建的。引用变量的声明创建一个变量,而不管是否向该变量赋值。4,实例成员是一个字段或一个实...
文章浏览阅读78次。现在,您可以直接将 Microsoft(R) Internet Explorer 复杂的 HTML 编辑功能合并到 Web 页中!Microsoft 的 HTML 编辑器是对 Internet Explorer 中 HTML 分析和展现引擎的内置扩展。从 Internet Explorer 4.0 开始,MSHTML 编辑器已经为主机应用程序提供了开发基于 HTML 的文本编辑器和 Web 创作应..._internet explore能制作网页吗
文章浏览阅读555次。先来看下oracle 10g中的自动统计任务的问题。从Oracle Database 10g开始,Oracle在建库后就默认创建了一个名为GATHER_STATS_JOB的定时任务,用于自动收集CBO的统计信息。这个自动任务默认情况下在工作日晚上10:00-6:00和周末全天开启。调用DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC收集统计信息。该过程首先检测统计信息缺失和陈旧的对象。然后确定优先级,再开始进行统计信息。可以通过以下查询这个JOB的运行情况:se._oracle 12c gather_stats_job
文章浏览阅读2k次。现在已经完全正确的调用了libsvm,我所处理的问题是利用libsvm进行文本分类1 首先利用CHI进行特征提取2 利用TFIDF进行权重提取3 把文章组织成libsvm可以识别的格式4 利用上面的三个步骤,就可以把数据传入libsvm进行训练,但是训练之前,还要进行参数调优,得到最好的c和g5 参数调优的过程就是利用 python grid._weka libsvm分类器的c和g
文章浏览阅读691次。该文主要记录是JSON的基本概念以及对应的cJSON API。一、什么是JSON ?详细的介绍见 https://www.json.org/ ,可以看到, JSON 可分为两类,一类是object ,一类是array。1.1 object引用官网的图,object 的定义为以'{'为起始符,'}'为结束符, 中间包含以','为间隔符的数个键-值对的集合,当然也可为空。1.2..._json 结束符