首页 > 其他分享 >C语言--函数2--递归1

C语言--函数2--递归1

时间:2022-12-30 11:33:24浏览次数:47  
标签:return 递归 Get -- C语言 int hanio jc

8、递归函数
直接或间接调用函数本身 “自己调用自己”
解决一个问题时,解决思路化成与问题本身类似的问题的时候=>递归
C语言能够解决的递归问题满足两个条件:
a 问题本身必须是一个递归问题
b 递归不能无限递归!!!
适合递归到一定程度时,答案显而易见的。
一定要有“跳出无限递归的条件”
C语言是如何支持递归的?
int age(int n)
{
if(n==1)
return 10;
return age(n-1)+2;
}

1、采用递归方法,写一个函数,求n!

#include<stdio.h>
//写一个函数,求n!
/*
Get_jc:写一个函数,求n!
@n:一个整数值
返回值:一个整数值
*/
int Get_jc(int n)
{
if(n==1||n==0)
{
return 1;
}
return Get_jc(n-1)*n;
}
int main()
{
int m,x;
scanf("%d",&m);
x=Get_jc(m);
printf("%d",x);
}

2、采用递归方法,hanio汉诺塔的移动步骤

#include<stdio.h>
//hanio移动步骤
/*
Get_jc:写一个函数,hanio移动步骤
@n:一个整数值
@A:A柱
@B:
@C:
返回值:无
*/
void hanio(int n,char A,char B ,char C)
{
if(n==0)
{
return ;
}
//1、把n-1个盘子从A移动到B,中间利用C
hanio(n-1,A,C,B);
//2、把最后那个盘子从A移动到C,打印出来
printf("%c->%c\n",A,C);
//3、把n-1个盘子从B移动到C,中间利用A
hanio(n-1,B,A,C);
}
int main()
{
int n;
scanf("%d",&n);
hanio(n, 'A', ' B', ' C');
}

C语言--函数2--递归1_hanio

3、采用递归方法,hanio汉诺塔的移动步数

#include<stdio.h>
//hanio移动步数
/*
Get_jc:写一个函数,hanio移动步数
@n:一个整数值
@A:A柱
@B:
@C:
返回值:无
*/
int Get_bs(int n)//步数
{
int count=0;
if(n>1)
{

return Get_bs(n-1)+1+Get_bs(n-1);;
}
else if(n==1)
{
return 1;
}

}
int main()
{
int n;
scanf("%d",&n);
int s=Get_bs(n);
printf("%d\n",s);
}

C语言--函数2--递归1_递归_02

标签:return,递归,Get,--,C语言,int,hanio,jc
From: https://blog.51cto.com/u_15860837/5979343

相关文章

  • markdown编辑器编辑markdown文档的编辑器
    /**·2022年12月30日·周五·09:56·农历壬寅虎年十二月初八·**http://mahua.jser.me/MaHua在线markdown编辑器https://www.cnblogs.com/博客园-博客......
  • 白话Java高级特性之异常
    白话Java高级特性之异常对于本文的内容,属于基础知识研究范畴,切勿以为读完此文就能将异常知识掌握到家。切记:操千曲而后晓声,观千剑而后识器,所以我觉得没有大量的源码阅读经验......
  • 操作系统实战45讲00040
    你好,我是LMOS。上节课我们学习了单机状态下网络数据在内核中流转的全过程,并且带你一起梳理了网络栈移植的关键步骤。这节课我会带你看看,现实世界中网络请求是如何穿过重......
  • 1024·致敬 | 迟到的小温暖,感谢不平凡的你们
    1024是2的10次方是电脑运行、存储,甚至分辨率的进制更是技术同学们最特别的节日今年的XTransfer1024线下活动由于疫情影响延后至今天举办在短暂的居家办公后大家重新相聚在办......
  • MySQL 5.7 版本的安装及简单使用(图文教程)
    MySQL5.7版本的安装使用详细教程写得还是比较详细,甚至有些繁琐,有很多步骤在其他的教程文档里都是省略掉的,但是我还是要写出来,因为我当时走了很多弯路,我希望你们能够避免我......
  • GF-使用apt下载不同架构的安装包
    以在x86机器上下载la64的安装包为例。添加软件源添加架构sudodpkg--add-architectureloongarch64修改/etc/apt/source.listdeb[arch=loongarch64]http://..........
  • 20 万字的 C++ 八股文&图解源码,发布!
    大家好,我是小贺。上周我放言说,这个礼拜整理出「C++八股文 」,给最近秋招季参加面试的读者朋友们,然后就有好几个读者追问小贺的C++八股文啥时候出,从大家的急切的言语中,能......
  • python的web应用程序开发(Django框架)
    python的web应用程序开发(Django框架)1.安装Django并开启网页服务器pipinstalldjango#安装Django包django-adminstartprojectmysite#在指定路径下新建一个mysite文件......
  • 20220627外星人2015 R2硬盘更换记录
    外星人换硬盘太贵,自个动手丰衣足食外星人alienware15R2更换硬盘记录,参考资料为:​​​https://downloads.dell.com/manuals/all-products/esuprt_laptop/esuprt_alienwa......
  • 实验室装修设计施工装饰工艺工程
      实验室的装修要做到防火防潮防腐等性能,增加通风,净化,无菌等功能,达到环保安权可靠经久耐用。实验室装修的设计主要有:空间的设计,格局的设计,功能的设计,实验流程的设计,实......