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

news/2024/11/24 10:59:14/

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

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

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

目录

数的阶乘

打印整数的位数

字符串个数统计

斐波那契数列

穷举算法

汉诺塔问题 


数的阶乘

代码逻辑:

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;
}

 


http://www.ppmy.cn/news/488252.html

相关文章

QPluginLoader 加载插件dll失败

1.加载 方法参考一下&#xff1a;Qt 使用QPluginLoader 加载外部dll的方法笔记_振星的博客-CSDN博客_qpluginloader 2.遇到的问题是&#xff1a;界面dll文件 在Debug平台编译下运行时&#xff0c;主界面可以调用dll,但是使用windeployqt xxx.exe后&#xff0c;加载dll失败&…

dll注册加载失败解决方法

当输入命令regsvr32 A.dll注册时&#xff0c;跳出下面错误提示&#xff1a; 模块C&#xff1a;\windows\System32\A.dll加载失败。 请确保该二进制存储在指定的路径中&#xff0c;或者调试它检查该二进制或相关的 .DLL文件是否有问题 查了很多资料&#xff0c;总而言之是64位…

查看开源操作系统ReactOS源码,解决dll库动态库加载失败问题(调用LoadLibrary加载失败)

目录 1、动态加载dll库去调用库中的函数 1.1、调用系统dll库中未公开的接口

dll文件懒加载_模块已加载,但对dllregisterServer的调用失败

在注册dll或者ocx的时候, 经常会遇到这么一个问题: 模块 已加载,但对dllregisterServer的调用失败,错误代码为0x8004***** 网上有网友回复说需要在管理员的模式下进行注册:本人测试过, 会出现如下问题: 模块 加载失败。请确保该二进制存储在指定的路径中,或者调试它以…

计算机中丢失swr.dll,win10系统提示模块initpki.dll加载失败如何解决

有不少用户在使用电脑的过程中,发现出现了模块initpki.dll加载失败的提示,遇到这样的问题该怎么办呢,本教程就给大家讲解一下 1、打开搜索,输入:powershell ,在windows powershell 上单击右键,选择【以管理员身份运行】; 2、在打开的框中复制下面代码粘贴进去: $arch …

python加载dll失败_python tensorflow导入DLL加载失败

我安装了最新的 python 3.6.4 x64版本 然后使用pip3为cpu-only安装tensorflow C:\>pip3 install tensorflow 但是当我尝试在python中导入tensorflow时 它向我显示了以下错误 我确信我已经安装了Microsoft Visual C 2015 Redistributable(x64) 所以它不会是dll msvcp140.dll丢…

模块“XXX.dll”加载失败

具体问题:模块“XXX.dll”加载失败 请确保该二进制存储在指定的路径中,或者调试它以检查该二进制或相关的.DLL文件是否有问题 找不到指定的模块。 1.在安装C++软件的时候,有时候安装失败提示“请确保二进制储存在指定的路径中,或者调试他以检查该二进制或相关的DLL文件”…

[模块加载失败:找不到指定的模块]——如何解决DLL加载问题?

[模块加载失败:找不到指定的模块]——如何解决DLL加载问题? 如果您在使用Windows操作系统时,遇到了“模块加载失败:找不到指定的模块”这样的错误提示,那么您很可能遇到了DLL(动态链接库)加载问题。本文将为您介绍该问题的原因及解决方法。 什么是DLL文件? DLL(Dyn…