C语言学习笔记:递归例题

这篇具有很好参考价值的文章主要介绍了C语言学习笔记:递归例题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

✨博文作者:烟雨孤舟
💖 喜欢的可以 点赞 收藏 关注哦~~

✍️ 作者简介: 一个热爱大数据的学习者

✍️ 笔记简介:作为大数据爱好者,以下是个人总结的学习笔记,如有错误,请多多指教!

目录

数的阶乘

打印整数的位数

字符串个数统计

斐波那契数列

穷举算法

汉诺塔问题 


数的阶乘

代码逻辑:

sum=n*n(n-1)*(n-2)....1

代码:
#include <stdio.h>
int factorial(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;
}

打印整数的位数

代码逻辑:

判断输入的n是否是个位数,如果是直接输入,不是在调用递归函数方法为n/10可以让每次递归时n的个数每次减一,根据n%10,打印出每次递归时n的个位数

代码:
#include<stdio.h>
void digui(int n);
int main(){
    int n;
    scanf("%d",&n);
    digui(n);
    return 0;
}
void digui(int n){
    if(n>9){
        digui(n/10);
    }
    printf("%d",n%10);
}

字符串个数统计

代码逻辑:

strlen(abcdef\0)
1+strlen(bcdef\0)
1+1+strlen(cdef\0)
1+1+1+strlen(def\0)
1+1+1+1+strlen(ef\0)
1+1+1+1+1+strlen(f\0)
1+1+1+1+1+1+strlen(\0)

代码
#include<stdio.h>
int my_strlen(char* ch)
{
	if (*ch != '\0')
	{
		return 1 + my_strlen(ch + 1);
	}
	return 0;
}
int main()
{
	char ch[20] = { 0 };
	scanf("%s", &ch);
	printf("%d", my_strlen(ch));
	return 0;
}

斐波那契数列

数列前两项都是1,后面任意一项都是其前两项之和。1 1 2 3 5 8 13 21 34

代码:
#include <stdio.h>
int  main()
{
    int x1=1, x2=1,x;
    printf("%d\t%d\t",x1,x2);
    for (int i = 0; i < 8; i++)
    {
      x =x1+x2;
      printf("%d\t",x);
        x1=x2;
        x2=x;
    }
    return 0;
}

穷举算法

某工地搬砖已知男人一人搬3块、女人一人2块,小孩两人1块,有多少方法用45个人刚好搬45块

#include <stdio.h>
int main(){
	int child,men,women;
	for(men=0;men<=15;men++)
		for(women=0;women<=22;women++){
			child=45-women-men;
			if(men*3+women*2+child*0.5==45)
				printf("men=%d,women=%d child=%d\n",men,women,child);
		}
		return 0;
}

汉诺塔问题 

有三根柱子,分别为A、B、C ,A柱上从上到下依次排列着由小到大的圆盘,我们需要把圆盘从A柱按照同样的摆放顺序放到C柱上,期间我们可以借助B柱。

每次只能挪动一个且是最上面的圆盘

按照从上到下依次是由小到大的顺序摆放。

#include<stdio.h>
#include<stdlib.h>
void move(char x, char y)	//输出移盘方案
{
	printf("%c->%c\n", x, y);
}
void hanoi(int n, char one, char two, char three)//移盘
{
	if (n == 1)
		move(one, three);//如果是1个盘,直接从第一个座移到第3个座上
	else
	{
		hanoi(n - 1, one, three, two);		
		move(one, three);
		hanoi(n - 1, two, one, three);
	}
}
int main()
{
	int n;
	printf("输入盘的个数\n");
	scanf("%d", &n);
	printf("移盘的步骤:\n");
	hanoi(n, 'A', 'B', 'C');
	system("pause");
	return 0;
}

 文章来源地址https://www.toymoban.com/news/detail-492773.html

到了这里,关于C语言学习笔记:递归例题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 6.Go语言学习笔记-结合chatGPT辅助学习Go语言底层原理

    1、Go版本 2、汇编基础 推荐阅读:GO汇编语言简介 推荐阅读:A Quick Guide to Go\\\'s Assembler - The Go Programming Language 精简指令集 数据传输: MOV/LEA 跳转指令: CMP/TEST/JMP/JCC 栈指令: PUSH/POP 函数调用指令: CALL/RET 算术指令: ADD/SUB/MUL/DIV 逻辑指令: AND/OR/XOR/NOT 移位指令: SHL/SHR JCC有条件跳转: JE

    2024年02月04日
    浏览(34)
  • go语言学习笔记1

    ​ GoLang是一种静态强类型、编译型、并发型,并具有 垃圾回收 功能的编程语言;它可以在不损失应用程序性能的情况下极大的降低代码的复杂性,还可以发挥多核处理器同步多工的优点,并可解决面向对象程序设计的麻烦,并帮助程序设计师处理琐碎但重要的内存管理问题

    2024年02月12日
    浏览(38)
  • C语言学习笔记:数组

    ✨博文作者:烟雨孤舟 💖 喜欢的可以 点赞 收藏 关注哦~~ ✍️ 作者简介: 一个热爱大数据的学习者 ✍️ 笔记简介:作为大数据爱好者,以下是个人总结的学习笔记,如有错误,请多多指教! 目录 ​​​​​​​ 简介 数组声明 数组初始化 访问数组元素 多维数组 二维数组

    2024年02月09日
    浏览(46)
  • Go语言学习笔记(三)

    教程:文档 - Go 编程语言 (studygolang.com) 在call-module-code需要注意,需要在hello目录下操作 这是一个在Go项目的模块管理中的命令。在Go的模块管理工具( go mod )中,这个命令用于修改模块依赖关系。 具体来说, go mod edit -replace example.com/greetings=../greetings  这个命令的作用是:

    2024年02月02日
    浏览(38)
  • Go语言学习笔记(二)

    以下是一些推荐的Go语言学习资源的链接: Go语言教程:https://golang.org/doc/ Go by Example:Go by Example Golang Tutorials:https://golangtutorials.com/ Go语言第一课(慕课网):PHP模糊查询技术案例视频教程-慕课网 Go语言进阶教程(实验楼):极客企业版 Go语言高级编程(GitBook):谁是凶手

    2024年01月20日
    浏览(38)
  • C语言学习笔记<1>

    1. EOF(End of File)是文件结束标志,用于表示文件已经读取完毕。在C语言中,可以通过判断是否读取到EOF来判断文件是否读取完毕。 以下是一个简单的C语言代码示例,用于读取一个文本文件并输出其内容: 2.单步执行 #include Windows.h 是C/C++中引入Windows API头文件的语句,它包

    2024年04月22日
    浏览(26)
  • lua脚本语言学习笔记

    Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。 因为我们使用redis的时候一般要写lua脚本,这篇文章就介绍一下lua脚本语言的基础用法。 window操作系统下可以使用SciTE来

    2024年02月16日
    浏览(40)
  • C语言学习笔记---C语言分支与循环语句

    前言: 什么是语句? C语言可分为以下五类: 表达式语句 函数调用语句 控制语句 复合语句 空语句 语句 :C语言中,由分号隔开的句子就是一条语句 如: C语言中用 非零 表示 真 ,用 零 表示 假 ,即: 逻辑真,逻辑假 三大语法结构 :顺序结构、分支(选择)结构、循环结构

    2024年02月16日
    浏览(38)
  • C语言学习笔记 第一个C语言项目-07

    目录 1.新建一个文件夹  2.新建一个文件,后缀以.cpp结尾 3.编写代码 4.编译与执行代码 代码解析  总结  如下图所示,选择相应的文件夹,然后点击新建文件按钮,新建的文件一定要写后缀。 #includestdio.h int main(){     printf(\\\"hello world!n\\\");     return 0; } 在vscode中,首先保存文

    2024年02月16日
    浏览(34)
  • 【go语言学习笔记】04 Go 语言工程管理

    1. 单元测试 单元测试是保证代码质量的好方法,但单元测试也不是万能的,使用它可以降低 Bug 率,但也不要完全依赖。除了单元测试外,还可以辅以 Code Review、人工测试等手段更好地保证代码质量。 1.1 定义 顾名思义,单元测试强调的是对单元进行测试。在开发中,一个单

    2024年02月13日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包