C语言递归类练习题目

2023-11-19

题目

//1.递归和非递归分别实现求第n个斐波那契数
//
// 2.编写一个函数实现n^k,使用递归实现
//
// 3. 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,
// 例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
//
// 4. 编写一个函数 reverse_string(char * string)(递归实现)
// 实现:将参数字符串中的字符反向排列。
// 要求:不能使用C函数库中的字符串操作函数。
//
// 5.递归和非递归分别实现strlen
// 6.递归和非递归分别实现求n的阶乘
// 7.递归方式实现打印一个整数的每一位

//1.递归和非递归分别实现求第n个斐波那契数

代码实现

在这里插入图片描述

#include<stdio.h>
int main () {
	int sum = 0;
	int f1 = 1 ;
	int f2 = 1 ;
    int i;
	int n;
	printf("输入第n个数:\n");
	scanf ("%d",&n);
	for(i = 1;i<=n;i++){
		sum = f1+f2;
        f1 = f2;
		f2 = sum;
	}
	printf("%d",sum);
	printf("\n");
	return 0;
}



int fibo(int n){
	int f1;
	if(n == 1||n == 2) {
		f1 = 1;
		return f1;
	}
	else { 
		return (fibo(n-2)+fibo(n-1));
	}
}
#include <stdio.h>
int main() {
	int  n;
	printf ("输入n的值:\n");
	scanf("%d",&n);
	printf("%d",fibo (n));
	printf("\n");
	return 0;
}

// 2.编写一个函数实现n^k,使用递归实现

代码效果

在这里插入图片描述

int square(int n,int k) {                              //k来记录次方数
   if(k == 1)                                               //当减为1时返回n的值
	   return n;
   else { 
	   return square(n,k-1)*n;                    //返回调用的值乘以这次的值再返回给上一层
   }
}
#include <stdio.h>
int main (){
	int n,k;
	printf("输入这个数字:\n");
	scanf("%d",&n);
	printf("输入这个数得次方:\n");
	scanf("%d",&k);
	printf("%d",square(n,k));
	return 0;
}

// 3. 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和, // 例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19

代码如下

在这里插入图片描述

#include<stdio.h>
int  DigitSum(int n){
	if(n/10 == 0)                                            //如果他的值小于10的话,就返回这个数字,也就是最后一位
		return n;                                         
	else 
		return DigitSum(n/10)+n%10;           //完成累加值       
}
int main (){
	int number;
	printf("请输入一个数字:\n");
	scanf("%d",&number);
	printf("%d",DigitSum(number));
	printf("\n");
	return 0;
}

// 4. 编写一个函数 reverse_string(char * string)(递归实现)
// 实现:将参数字符串中的字符反向排列。
// 要求:不能使用C函数库中的字符串操作函数。

代码效果

在这里插入图片描述

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void reverse_string(char* string) {
	char p;                                                          //定义一个字符来存储第一个地址自增后第一个字符
	p=*string;
	if(*(string++) == '\0')
		return;                                                       //如果是结束符号,那么返回
	else 
		reverse_string(string++);                  
	printf("%c",p);                                               //顺序执行输出p存储的字符,再返回上一层
}
int main() {
	char string[20];
	gets(string);
	reverse_string(string);
	printf("\n");
	return 0;
}

// 5.递归分别实现strlen

在这里插入图片描述

#include<stdio.h>
void get_strlen(char* str){
	static  int count = 0;                     //定义了一个静态变量来记录数循环次数,循环了几次就是有几个长度
	if(*(str++) == '\0')
		printf("%d",count);
	else {
		count++;
		get_strlen(str++);
	}
}
int main () {
	char string[20];
	gets(string);
	get_strlen(string);
	printf("\n");
	return 0;
}

// 6.递归实现求n的阶乘

在这里插入图片描述

#include <stdio.h>
int fac(int n) {
	if(n == 1)                                              //如果是1返回值为1      2*fac(2-1)   值为2,在返回给上一层
		return 1;                                     
	else return n*fac(n-1);
}
int main() {
	int n;
	printf("输入一个数字:\n");
	scanf("%d",&n);
	printf("%d",fac(n));
	printf("\n");
	return 0;
}

// 7.递归方式实现打印一个整数的每一位

在这里插入图片描述

#include <stdio.h> 
int  fun(int number) {                                                         
		if(number>9)                                                   
		{
			fun(number/10);                                       //运行到最后输出1然后返回上一层函数                                 
		}
			printf("%d ",number%10);                        //函数顺序执行,输出2接着返回上一层调运顺序执行3,4,
}
int main() {
	int number;
	printf("输入一个数字:\n");
	scanf("%d",&number);
	fun(number);
	printf("\n");
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言递归类练习题目 的相关文章

  • 【unity3D】创建TextMeshPro(TMP)中文字体(解决输入中文乱码问题)

    未来的游戏开发程序媛 现在的努力学习菜鸡 本专栏是我关于游戏开发的学习笔记 本篇是unity的TMP中文输入显示乱码的解决方式 创建 TextMeshPro 中文字体 遇到的问题描述 解决方式 Font Asset Creator 面板扩展
  • linux基本命令大全

    基本命令 关机 shutdown h halt init 0 poweroff 重启 shutdown r reboot init 6 pwd 查看工作目录 ls 查看指定目录的内容 l 列表显示 a 显示所有 包括隐藏文件 h 人性化的显
  • 【QT学习笔记】QAction和QToolButton的使用

    QAction可以在QT Creator中Action Editor中创建 QAction创建之后的两个使用方式 放到tool bar中 跟QToolButton绑定 ui gt tBtnListIni gt setDefaultActio
  • 虚拟服务器如何传东西,虚拟服务器如何传东西

    虚拟服务器如何传东西 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 计费项包括存储费和流量费 存储费根据存储库的不同进行
  • Reinforcement Learning 强化学习(四)

    Task03 本次学习主要参照Datawhale开源学习及强化学习蘑菇书Easy RL 第4章 策略梯度 Policy Gradient 4 1 策略梯度算法 在强化学习中有 3 个组成部分 演员 actor 环境 environment
  • odoo tree form 视图禁止创建、修改、删除、复制

  • 用标准C语言初始化线性表,c语言实现线性表的初始化,创建,查找,删除

    1 第一步定义线性表结构 typedef struct ElementType data MaxSize int length Lineartable 2 第二步线性表初始化 初始化线性表 Lineartable INITAL Linear
  • Go 每日一库之 gjson

    快速使用 先安装 go get github com tidwall gjson 后使用 package main import fmt github com tidwall gjson func main json name first
  • Hackinglab(鹰眼)——解密关

    目录 1 以管理员身份登录系统 2 邂逅对门的妹纸 3 万恶的Cisco 4 万恶的加密 5 喜欢泡网吧的小明 6 异常数据 7 md5真的能碰撞嘛 8 小明爱上了一个搞硬件的小姑凉 9 有签名限制的读取任意文件 10 美丽的邂逅与密码器的
  • 什么是卷积

    什么是卷积 卷积 convolution 是一种运算 你可以类比于加 减 乘 除 矩阵的点乘与叉乘等等 它有自己的运算规则 卷积的符号是星号 表达式为 连续的为 f g
  • 小程序web-view打开PDF格式文件的安卓苹果兼容性问题

    小程序中打开pdf格式原本可以使用web view 承载网页的容器 会自动铺满整个小程序页面 个人类型的小程序暂不支持使用
  • 《小岛区块链》之区块链起源

    今天我们开始 小岛区块链 的第三章节 智能合约 本文衔接于 小岛区块链 第二章节 共识之后 为方便大家理解 请先阅读 小岛区块链 之起源 小岛区块链 之共识 一 选举记账还能再升级一下吗 上回说到 在小郑的提议下 鹿谷的村民们都开始按照投票
  • 2019年电赛之路——2015年电子设计竞赛A题任务设计

    参加19年电赛 我们奔着电源题来的 所以我们一开始要练习的题目就选定了15年的A题 因为我们找到了几个国一方案 但是只有一个方案 代码和PCB图都没有 这也是我们失误的地方 本来的路线应该是找一个成品方案 模仿着做下来 先做下来一个题目后
  • 剑指 Offer 05. 替换空格(java+python)

    请实现一个函数 把字符串 s 中的每个空格替换成 20 示例 1 输入 s We are happy 输出 We 20are 20happy 限制 0 lt s 的长度 lt 10000 java StringBuilder StringB
  • tomcat7启动报taglib标签错误

    问题描述 应用在tomcat6上发布没有问题 部署到tomcat7后报错 不识别配置的taglib标签 问题截图如下 解决方法 查询应用环境 除服务器为tomcat7外 配置的web xml 头文件为 测试头文件为
  • Arduino 自动初始化ESP8266为透传模式

    通过上篇可以把esp8266设置成透传模式 但掉电后esp8266会退出透传模式 需要重新初始化 这样arduino和esp8266结合使用时 每次重启后都要通过电脑重新设置esp8266进入透传模式 这里通过把AT指令写进arduino程
  • elasticsearch 为“非查询字段”不建索引 index store

    官方文档 index 简章翻译 文末附原文 索引index 这个参数可以控制字段应该怎样建索引 怎样查询 它有以下三个可用值 no 不把此字段添加到索引中 也就是不建索引 此字段不可查询 not analyzed 将字段的原始值放入索引中

随机推荐

  • python元组练习题

    Python 元组综合练习 使用python语言创建空元组 score 按学号顺序 由小到大 保存多个学生一门课程的 考试成绩 调用元组操作的常用函数实现以下功能 1 创建score 元组 其中包含10 个数值 68 87 92 100 7
  • Golang当中的定时器

    定时器 前言 定时器的基本使用 前言 在平时写代码的时候 我们经常会遇到在将来某个时间点或者间隔一段时间重复执行函数 这个时候我们就可以考虑使用定时器 本片文章主要介绍一下golang当中的几个常用的定时器 time Timer time
  • (二十六)admin-boot项目之基于注解的数据字段脱敏

    项目地址 https gitee com springzb admin boot 如果觉得不错 给个 star 简介 这是一个基础的企业级基础后端脚手架项目 主要由springboot为基础搭建 后期整合一些基础插件例如 redis xxl
  • VMware 14 安装win7x64

    所需工具 VMware17 windows镜像 windows镜像在脚本之家下载的 1 新建虚拟机 文件 gt 新建虚拟机 gt 下一步 2 选择 稍候安装操作系统 下一步 3 选择操作系统和版本 下一步 4 设置虚拟机名称和存放位置 选择
  • java动态创建xml文件

    private static void createXml String dest throws Exception DocumentBuilderFactory factory DocumentBuilderFactory newInst
  • Java中占位符的实战运用

    java中的占位符 有以下几种等等 s字符串类型的占位符 b布尔类型的占位符 d整数类型的占位符 c字符类型的占位符 我们大多情况就只用前两种 举个例子 Created by xiwen on 2021 1 14 Slf4j public
  • 常用小工具使用记录整理

    简单记录方便后续使用 1 截图软件 FSCapture exe FSCapture最新版是款适合电脑屏幕中使用的抓屏工具 FSCapture官方版集成了图像捕捉 图像浏览以及图像编辑等功能为一体 帮助用户对截取的图形进行处理操作 并且FSC
  • ionic 解析json串 带(路由 侧拉 效果 上拉刷新 下拉加载)

    先上图看效果 上代码 一般都是 按顺序上代码的
  • 使用STM32高级定时器(TIM8)PWM互补通道输出PWM

    一 为何使用 最近做项目 因为定时器不够用需要用高级定时器 TIM8 来输出PWM来控制电机 刚好硬件工程师把引脚分配到了TIM8定时器CH3的互补通道CH3 ON上 所以需要将CH3 ON当普通的PWM模式输出PWM 特意记录一下 二 下
  • 阿里云Linux热扩容云盘(growpart和resize2fs工具)

    阿里云linux机器系统盘空间不够进行扩容 一 扩容物理盘 阿里云控制台在线扩容完成 二 安装growpart工具和resize2fs工具 root A yum install cloud utils growpart root A yum
  • token保活设计.md

    如果我们要使用token机制用以标识用户登录状态 以获得请求相关资源接口的权限 让你来设计一套方案 以为怎么设计呢 通常有两种思路 1 使用refreshtoken获取新的accesstoken 登录成功之后 返回一个返回refreshto
  • jQuery动态控制单选框选中,实现radio单选框选中后触发事件。prop()选中,取消事件判断。

    input name IS BREAK value 0 prop checked true div class form group div
  • 重读百度移动生态:“第一曲线”的创新“延长线”

    刚刚结束的 WISE2022新经济之王 大会上 百度集团资深副总裁 百度移动生态事业群组总经理何俊杰在主旨演讲中断言 百度搜索 百度APP是AI规模最大的应用场景 随着AI预训练大模型 AIGC 数字人等新技术的规模化落地 其AI带来的创新
  • 【STM32】IIC使用中DMA传输时 发送数据总少一个的问题

    问题描述 在使用STM32 I2C数据发送过程中 发现每轮实际发送出去的数据总比在DMA配置中设定的传输数据个数要少一个 比方说 DMA配置里设定的传输数据个数是10个 结果发现在总线上只能发出9个 经过进一步发现是少了最后一个数据 当对I
  • 简单认识KLT(Kanade-Lucas-Tomasi )跟踪算法

    KLT Kanade Lucas Tomasi 跟踪算法 前言 研究目标跟踪的算法种类颇多 主要可分为两大类 一类是传统的目标跟踪算法 包括粒子滤波 pf Mean Shift及KLT算法 或称Lucas光流法 另一大类是基于深度学习的跟踪
  • 字节跳动笔试---字母交换,最多m次

    参考 https blog csdn net cxzzxc123456 article details 79058419 编码题 字符串S由小写字母构成 长度为n 定义一种操作 每次都可以挑选字符串中任意的两个相邻字母进行交换 询问在至多交
  • [ C语言练习题 5 ] 矩阵转置(将矩阵的行列互换得到的新矩阵)

    题目来源 矩阵转置 牛客题霸 牛客网 描述 KiKi有一个矩阵 他想知道转置后的矩阵 将矩阵的行列互换得到的新矩阵称为转置矩阵 请编程帮他解答 输入描述 第一行包含两个整数n和m 表示一个矩阵包含n行m列 用空格分隔 1 n 10 1 m
  • 使用库函数sqrt求平方根 C语言入门

    欢迎关注笔者 你的支持是持续更博的最大动力 目录 问题描述 库函数 头文件 代码 其他 问题描述 使用库函数sqrt求平方根 库函数 库文件 Library function C C 标准规定的 编译器自带的函数 库函数顾名思义就是库里已存
  • 【QML】如何在QML中添加自定义模块并使用

    一 引言 在 导入本地QML文档目录 一文中 记录了如何导入本地QML文档 本文将记录 如何在QML中使用自定义模块 二 过程记录 本文以一个backend目录来存放自定义的模块 在该目录放置一个Data目录作为模块 其中用于描述模块的就有
  • C语言递归类练习题目

    题目 1 递归和非递归分别实现求第n个斐波那契数 2 编写一个函数实现n k 使用递归实现 3 写一个递归函数DigitSum n 输入一个非负整数 返回组成它的数字之和 例如 调用DigitSum 1729 则应该返回1 7 2 9 它的