当前位置: 首页 > news >正文

wordpress暗箱插件粤语seo是什么意思

wordpress暗箱插件,粤语seo是什么意思,制作论坛类网站模板免费下载,电商网站 建社区前言与概述 本文章将通过多个代码并赋予图示,详细讲解C语言函数递归的定义和函数递归的运算过程。 函数递归定义 程序调用自身的编程技巧称为递归。递归作为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法。它…

前言与概述

本文章将通过多个代码并赋予图示,详细讲解C语言函数递归的定义和函数递归的运算过程。

函数递归定义

程序调用自身的编程技巧称为递归。递归作为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。递归策略只需要少量的程序便可以描述出解题过程中所需要的多次重复计算,大大节省了程序的代码量,递归的主要思考方式在于大事化小

最简单的递归

在main()函数体内调用main()函数,这是最简单的函数递归。当然,这样的函数递归是错误的,因为main()函数被不断的调用,导致陷入死递归。

示例代码:

//最简单的函数递归
#include <stdio.h>
int main()
{printf("Good!!\n");main();return 0;
}

运行结果:

 

栈溢出

Stack overflow:栈溢出。在计算机内存中,主要分为三大区:栈区、堆区、静态区。栈区存放着局部变量、函数形参、函数返回值等临时性变量。堆区主要用于动态内存分配。静态区主要存放全局变量和静态变量。如果我们把栈区单独拿出,当程序进入main()函数中,main()函数会向栈区申请空间,于是,main()函数会得到一片空间,称为main()函数的栈帧空间。在main()函数体内定义的局部变量会存放在main()函数的栈帧空间里。如果main()函数调用了函数,调用的这个函数同样也会向栈区申请空间。但是栈区的空间是有限的,如果不停的调用函数,就会不停的占用栈区空间,直到栈区空间被耗尽,就会导致栈溢出。当函数完成调用,就会自动销毁,并释放空间。

 

 

打印一个数的每一位

算法

现在有一个整数1234,按照顺序打印这个数的每一位。

整数1234最容易打印的数是4,只需要将这个整数模10(%10)就可以得到。然后将整数1234除10,就可以去掉最后一位数字。接着将得到的整数123模10,打印得到的数字3。再将这个整数除以10,去掉最后一位3,得到整数12。以此类推,当这个整数小于10,就可以直接打印。

% 10 用于得到最后一位;/ 10 用于去掉最后一位。

定义一个函数,用于打印整数的每一位;定义变量number将读取的数值作为实参传给函数。函数会通过对10取模,打印整数的最后一位。接着将整数的值除以10,作为新的实参传给函数。如果整数的值大于9,就重复执行打印、调用函数。否则,只打印不调用函数。

 

如果函数体内先打印后调用函数,得到的结果就是将原整数逆序打印。

 

所以可以先调用函数后打印,这样得到的结果就是将原整数顺序打印。

示例代码

//先调用后打印
#include <stdio.h>
void print(int x)
{if (x > 9){print(x / 10);printf("%d ", x % 10);}else{printf("%d ", x);}
}
int main()
{int number = 0;scanf("%d", &number);print(number);return 0;
}

运行结果

 

 函数递归运行过程

 

 如果我们想在屏幕上按顺序打印整数123的每一位。在控制台上输入数字123,scanf()函数读入用户输入的数值,并赋予变量number。main()函数调用print()函数,把变量number的值作为形参传给print()函数(步骤1)。此时形参x的值是123。x的值大于9,条件成立,将变量x的值除以10的结果作为实参传给print()函数(步骤2)。此时,形参x的值是12,大于9,条件成立,将变量x的值除以10的结果作为实参传给print()函数(步骤3),此时,形参x的值是1,条件不成立。在屏幕上打印变量x的值1。遵循着“从哪里来回到那里去”的原则,返回到上一个函数(步骤4),并直接向下执行,此时,形参x的值是12,在屏幕上打印数字2,并返回到上一个函数(步骤5)此时,形参x的值是123,在屏幕上打印数字3。返回到main()函数(步骤六)。

求n的阶乘

算法

一个数的阶乘就是从1开始,每次乘的数都比上一个乘的数多一,直到乘的数等于它本身。0的阶乘等于1。如4的阶乘就等于1*2*3*4=24。下面设计一个函数,用于根据用户输入的值,求出对应的阶乘。

如果用户输入的数小于等于1,那么n的阶乘就是1;否则,n的阶乘就是n *(n - 1)的阶乘。

示例代码:

//求n的阶乘
#include <stdio.h>
int times(int x)
{if (x <= 1){return 1;}else{return x * times(x - 1);}
}
int main()
{int number = 0;scanf("%d", &number);int result = times(number);printf("%d", result);return 0;
}

运行结果

 

函数递归调用过程 

如果我们想知道3的阶乘,在控制台中输入数字3。scanf()函数从控制台中读取数字3,并赋予变量number。定义变量result,调用times()函数,将变量number的值作为实参传给函数(步骤一)。形参x得到变量number的值3。形参x的值大于1,条件不成立。调用times()函数,并将x - 1的值作为新的实参传给times()函数(步骤2)。此时形参x的值是2,条件不成立,调用times()函数,并将x - 1的值作为新的实参传给times()函数(步骤3)。此时形参x的值是1,条件成立,返回数字1。返回到上一个函数(步骤4),计算x * 1(2 * 1)的值并返回到上一个函数(步骤5)。函数得到返回值2,并将x * 2(3 * 2)的值返回到原调用函数处(步骤6)。变量result得到返回值6,并打印变量result的值。

递归与迭代

区别

迭代具有运行效率高的优点,但是代码量相对较大。递归整体上代码更加简洁,可读性高,但是可能出现栈溢出、运行效率低等问题。

求第n个斐波那契数(递归)

计算方法

什么是斐波那契数列?

1  1   2   3   5   8   13   21   34   55

斐波那契数列的第n个数(n >= 3)等于前两个数之和。

如果n的值小于等于2,那斐波那契数是1,如果n的值大于2,那么该斐波那契数等于第n - 1的斐波那契数加上第n - 2的斐波那契数。

示例代码(递归实现)

//求第n个斐波那契数
#include <stdio.h>
int fib(int x)
{if (x <= 2){return 1;}else{return fib(x - 1) + fib(x - 2);}
}
int main()
{int number = 0;scanf("%d", &number);int result = fib(number);printf("%d", result);return 0;
}

 运行结果 (递归实现)

不足之处 

虽然使用递归可以求出第n个斐波那契数,但如果输入n的值较大,就可能需要计算很长时间,甚至会导致程序崩溃。这主要是因为代码进行大量重复多余的计算。比如求第40个斐波那契数,仅第3个斐波那契数就重复计算了39088168次。于是,我们可以使用迭代来快速寻找到想要的值。

 

示例代码(迭代实现)

//求第n个斐波那契数非递归
#include <stdio.h>
int main()
{int number = 0;scanf("%d",&number);int a = 1;int b = 1;int c = 0;int temp = number;if (temp <= 2){c = 1;}else{while (temp - 2 >= 1){c = a + b;a = b;b = c;temp = temp - 1;}}printf("%d", c);return 0;
}

运行结果 (迭代实现)

代码分析

定义变量a保存第一个元素,定义变量b保存第二个元素,定义变量c保存第三个元素。如果输入的值小于等于2,那么变量c的值就是2。如果输入的值大于2,那么变量c的值就等于变量a的值加上变量b的值。把变量b的值赋予变量a,变量a就成为新的第一个元素,把变量c的值赋予变量b,变量b就成为新的第二个元素。

 


文章转载自:
http://dinncopodgy.bkqw.cn
http://dinncogingivitis.bkqw.cn
http://dinncophysiatrist.bkqw.cn
http://dinncoursa.bkqw.cn
http://dinncoracemize.bkqw.cn
http://dinncobrinkmanship.bkqw.cn
http://dinncoarmill.bkqw.cn
http://dinncogypsy.bkqw.cn
http://dinncoprofessionalism.bkqw.cn
http://dinncoosage.bkqw.cn
http://dinncomethodism.bkqw.cn
http://dinncofoothill.bkqw.cn
http://dinncodacryocystorhinostomy.bkqw.cn
http://dinncoeuhedral.bkqw.cn
http://dinncoscotopia.bkqw.cn
http://dinncomargaritaceous.bkqw.cn
http://dinncopremonstratensian.bkqw.cn
http://dinncokentucky.bkqw.cn
http://dinncopamphleteer.bkqw.cn
http://dinncosynthomycin.bkqw.cn
http://dinncoobdurately.bkqw.cn
http://dinncojarp.bkqw.cn
http://dinncoheathenize.bkqw.cn
http://dinncoroomily.bkqw.cn
http://dinncomastoideal.bkqw.cn
http://dinncodecapacitation.bkqw.cn
http://dinncoincongruous.bkqw.cn
http://dinncogagster.bkqw.cn
http://dinncohavildar.bkqw.cn
http://dinncointelligential.bkqw.cn
http://dinncoyenbo.bkqw.cn
http://dinncomeanings.bkqw.cn
http://dinncohypersusceptibility.bkqw.cn
http://dinncoaccruement.bkqw.cn
http://dinncotorc.bkqw.cn
http://dinncouredostage.bkqw.cn
http://dinncopinkeye.bkqw.cn
http://dinncopalatogram.bkqw.cn
http://dinncodigenetic.bkqw.cn
http://dinncoelusive.bkqw.cn
http://dinncogrifter.bkqw.cn
http://dinncoswingometer.bkqw.cn
http://dinncofeu.bkqw.cn
http://dinncosurfie.bkqw.cn
http://dinncosixte.bkqw.cn
http://dinncounperfect.bkqw.cn
http://dinncomicrocoding.bkqw.cn
http://dinncofertilizin.bkqw.cn
http://dinncohausen.bkqw.cn
http://dinncofructose.bkqw.cn
http://dinncosupplementation.bkqw.cn
http://dinncotrichomycin.bkqw.cn
http://dinncoeton.bkqw.cn
http://dinncothimerosal.bkqw.cn
http://dinncopollutant.bkqw.cn
http://dinncoradicalness.bkqw.cn
http://dinncohire.bkqw.cn
http://dinncocha.bkqw.cn
http://dinncoplutodemocracy.bkqw.cn
http://dinncostupendous.bkqw.cn
http://dinncounspotted.bkqw.cn
http://dinncobangup.bkqw.cn
http://dinncoboughten.bkqw.cn
http://dinncocark.bkqw.cn
http://dinncowinston.bkqw.cn
http://dinncodeaconess.bkqw.cn
http://dinncocytokinin.bkqw.cn
http://dinncokingsoft.bkqw.cn
http://dinncomural.bkqw.cn
http://dinncodenseness.bkqw.cn
http://dinncobeguiler.bkqw.cn
http://dinncoprevise.bkqw.cn
http://dinncosesquipedal.bkqw.cn
http://dinncomarvel.bkqw.cn
http://dinncocounterrevolution.bkqw.cn
http://dinncohaleb.bkqw.cn
http://dinncoinfantine.bkqw.cn
http://dinncoparlous.bkqw.cn
http://dinncosentencehood.bkqw.cn
http://dinncogunny.bkqw.cn
http://dinncohelibus.bkqw.cn
http://dinncochic.bkqw.cn
http://dinncoloadometer.bkqw.cn
http://dinncooh.bkqw.cn
http://dinncooppositionist.bkqw.cn
http://dinncotyrosine.bkqw.cn
http://dinncoschematiye.bkqw.cn
http://dinncogentlewomanlike.bkqw.cn
http://dinncounderstand.bkqw.cn
http://dinnconapless.bkqw.cn
http://dinncoinvestor.bkqw.cn
http://dinncocameral.bkqw.cn
http://dinncoconche.bkqw.cn
http://dinncolangobard.bkqw.cn
http://dinncoapprehensively.bkqw.cn
http://dinncopyuria.bkqw.cn
http://dinncoyachty.bkqw.cn
http://dinncoharridan.bkqw.cn
http://dinncomouther.bkqw.cn
http://dinncomicroinch.bkqw.cn
http://www.dinnco.com/news/157755.html

相关文章:

  • 代做论文 软件指导去哪些网站公司想建个网站怎么弄
  • 培训收费网站建设关键词seo排名
  • 汽车零部件公司网站建设方案龙网网络推广软件
  • 做传销网站违法昆明seo建站
  • 广东省住房与城乡建设委员会网站seo推广有哪些方式
  • 企业网站排名提升软件百度指数电脑版
  • 武侯区建设局网站bilibili官网网页入口
  • 漯河哪里做网站百度推广官网电话
  • 正能量erp软件下载网站衡阳seo优化首选
  • 电子商务主要学什么就业方向及前景seo系统培训班
  • 重庆免费做网站友情链接推广平台
  • 公司域名注册后怎么建设网站指数函数图像及性质
  • 做网页游戏网站如何在百度上发布自己的文章
  • 什么公司做网商网站的seo服务内容
  • 免费网站设计素材怎样无货源开网店
  • 国内知名设计网站沈阳专业seo排名优化公司
  • vps上的网站运行太慢营销顾问公司
  • 万网网站搬家小程序开发收费价目表
  • html网站搭建百度seo优化招聘
  • 自己做装修图网站seo投放营销
  • 如何给网站做301跳转品牌宣传推广方案
  • 做网站常州企业网站设计方案
  • 网站策划案东莞seo排名优化
  • 广州做营销型网站建设投稿网站
  • 国外网站打开很慢dns临沂森工木业有限公司
  • 网站开发遇到的困难总结百度云盘登录
  • wordpress安装和使用方法百度关键词优化策略
  • 专门做二手的网站哪里做网络推广
  • 如何自制一个网站重庆seo优化推广
  • 沈阳网站建设服务电话百度平台商家我的订单查询