C 递归-程序员宅基地

C 递归

递归指的是在函数的定义中使用函数自身的方法。

    举个例子:
    从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?"从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?'从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……'" 

语法格式如下:
void recursion()
{
   statements;
   ... ... ...
   recursion(); /* 函数调用自身 */
   ... ... ...
}
 
int main()
{
   recursion();
}

流程图:

C 语言支持递归,即一个函数可以调用其自身。但在使用递归时,程序员需要注意定义一个从函数退出的条件,否则会进入死循环。

递归函数在解决许多数学问题上起了至关重要的作用,比如计算一个数的阶乘、生成斐波那契数列,等等。
数的阶乘

下面的实例使用递归函数计算一个给定的数的阶乘:
实例
#include <stdio.h>
 
double factorial(unsigned int i)
{
   if(i <= 1)
   {
      return 1;
   }
   return i * factorial(i - 1);
}
int  main()
{
    int i = 15;
    printf("%d 的阶乘为 %f\n", i, factorial(i));
    return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

15 的阶乘为 1307674368000.000000

斐波那契数列

下面的实例使用递归函数生成一个给定的数的斐波那契数列:
实例
#include <stdio.h>
 
int fibonaci(int i)
{
   if(i == 0)
   {
      return 0;
   }
   if(i == 1)
   {
      return 1;
   }
   return fibonaci(i-1) + fibonaci(i-2);
}
 
int  main()
{
    int i;
    for (i = 0; i < 10; i++)
    {
       printf("%d\t\n", fibonaci(i));
    }
    return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

0    
1    
1    
2    
3    
5    
8    
13    
21    
34

 

转载于:https://www.cnblogs.com/bytebee/p/8535513.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30920513/article/details/98192662

智能推荐

批量执行sql脚本(dos,sqlcmd),实现数据库升级,本地必须有数据库_u8o.mom-程序员宅基地

文章浏览阅读1.3w次。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;using _u8o.mom

对于提取图像多尺度特征的思考_多尺度特征提取的作用-程序员宅基地

文章浏览阅读1.1w次,点赞2次,收藏36次。众所周知通常CNN要求输入图像尺寸是固定的,比如现有的效果比较好的pre-trained的模型要求输入为224224,227227等。这个要求是CNN本身结构决定的,因为CNN一般包括多个全连接层,而全连接层神经元数目通常是固定的,如4096,4096,1000。这一限制决定了利用CNN提取的特征是单一尺度的,因为输入图像是单一的。多尺度特征(multi-scale feature)能有效改善i..._多尺度特征提取的作用

Mac M1 python 连点器脚本_mac电脑怎么使用代码进行连点-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏2次。M1 打游戏没有连点器很不爽,自己写了一个!M1 自带python3 不过安装依赖pip要升级一下!#coding=utf-8#!/usr/bin/python3from pynput.keyboard import Listenerimport time#亲测有效!from pykeyboard import PyKeyboardimport threadingisrunning = Falsekeyb = PyKeyboard()#按键设置def running(): _mac电脑怎么使用代码进行连点

学习公开视频-程序员宅基地

文章浏览阅读255次。linux内核网络协议栈实战:https://www.bilibili.com/video/av68721406?p=1华为网络工程师HCNA 拓扑实验与技术解析 #旧版:https://www.bilibili.com/video/av82658295?p=84【千锋】网络安全教程-网络安全基础全套(1)https://www.bilibili.com/video/av87045999?p=...

Docker_9988c銍廋c-程序员宅基地

文章浏览阅读2.4w次,点赞7次,收藏9次。Docker一、Docker介绍。引言开发环境和测试环境不同,环境不一致导致测试结果不同(解决环境不一致的问题)。多用户操作系统下会相互影响(实现多用户环境隔离)。非常多的服务器需要部署,逐一部署运维成本过高(降低运维成本)。软件安装复杂、配置多(解决安装软件成本过高)。起源创业公司dotCloud用Docker作为PASS平台,2013年因亚马逊、微软、谷歌都开始PASS平台。无法继续经营,将公司核心技术Docker开源。架构Docker三个重要组成部分:镜像(Image)._9988c銍廋c

Python学习基础知识之 元祖与字典介绍以及常见操作_如何定义全局元祖-程序员宅基地

文章浏览阅读293次。一、元祖的介绍1.1元祖Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。1.2访问元组元素1.3修改元组报错1.4元组的内置函数count, indexindex:检测 元素是否包含在元组中,如果是返回开始的索引值count:返回 元素在start和end之间 在 元组里面出现的次数1.4.1index (有坑)二、软件开发中的 字典变量info为字典类型: info = {'..._如何定义全局元祖

随便推点

运维里的人工智能_数据库运维和人工智能-程序员宅基地

文章浏览阅读1.2k次。J网易游戏高级开发工程师,负责智能运维的算法和工程开发运营维护的重要性说到运维,很多人可能会很陌生,运维是什么,为什么我们需要运维?21 世纪的今天,我们已经离不开各式各样的游戏,网站和软件。这些服务的背后,是一个又一个的服务器,运行着形形色色的程序。这些服务器只不过是普通的电脑,他们也有普通电脑的烦恼,例如内存泄露,磁盘满了和系统出错等。就算服务器本身没有出问题,服务器里运行的程..._数据库运维和人工智能

java常用类实验报告总结_第七次java实验报告-程序员宅基地

文章浏览阅读1.1k次。Java实验报告班级 计科二班 学号20188437 姓名 何磊完成时间 2019/10/25评分等级实验四 类的继承实验内容完成火车站售票程序的模拟。要求:(1)总票数1000张;(2)10个窗口同时开始卖票;(3)卖票过程延时1秒钟;(4)不能出现一票多卖或卖出负数号票的情况。实验过程(请自己调整格式)(一)(1)实验代码package火车站售票程序;class MyThread ..._java常用实用类实验报告

mybatis 向oracle中插入clob/blob类型字段_mybatis oracle clob 和nclob 操作-程序员宅基地

文章浏览阅读4.1k次。xml配置文件:&lt;mapper namespace="com.mapper.api.ProductLableDao"&gt; &lt;resultMap type="com.mapper.pojo.Test" id="BaseResultMap"&gt; &lt;result property="filed" column="col" jdbcT_mybatis oracle clob 和nclob 操作

[Asp.Net]WebService通过URL直接GET请求_net webservice 怎么get请求-程序员宅基地

文章浏览阅读1w次。WebService可以有Get、Post、Soap、Document四种方式调用,以下是四种方式的参照说明。name 属性 说明 HttpGet 添加HTTP GET协议 在追加到HTTP请求URL的查询字符串中传递的方法参数,格式为:?name1=value1&name2=value2...。返回值被当做简单的XML文档放入HTTP响应的正文中(没有)。 HTTPPost 添加HTTP P_net webservice 怎么get请求

10. AD/DA(spi协议)_ad和da分辨率的算法-程序员宅基地

文章浏览阅读927次。AD转换及SPI协议_ad和da分辨率的算法

全媒体运营师胡耀文教你:用户运营体系的推导思考_全媒体交互的客户运营-程序员宅基地

文章浏览阅读265次。体系,是一定范围内同类的事物按照秩序联系组合而成的整体。用户运营体系,则是用户需求与企业需求的结合,是面向双方的解决方案。规划用户运营的体系,其目的为理清业务运作模式及提前做好能力储备,便于后续进行产品规划。近期在思考体系规划时,也尝试着归纳符合逻辑且较为通用的方式。在分享前,先自我介绍一下,我是青岛艺形艺意文化传媒有限公司联合创始人、首席新媒体商学院创始人,资深新媒体运营人,腾讯网、百度网、今日头条、搜狐网、网易新闻、凤凰新闻等网站知名专栏作者胡耀文。今天胡老师主要围绕互联网保险为例,从设计运营模_全媒体交互的客户运营