练习之烦人的递归

news2024/11/15 12:17:40

文章目录

  • 1.删除公共字符
  • 2.读入一串以'?'结束的字符串,逆序输出。
    • 法一:常规递归
    • 法二:投机取巧
  • 3.递归将整数输出为字符串
  • 4.递归输出1--n的平方和
  • 5.递归计算2+22+222+...
  • 6.递归求最大公约数
  • 7.递归输出x的n次方
  • 8. 递归计算下列式子的值

1.删除公共字符

输入两个字符串,从第一个字符串中删除第二个字符串中所有的字符。
保证两个字符串的长度均不超过100。

输入:两行字符串。
They are students.
aeiou
输出:删除后的字符串。
Thy r stdnts.

#include<stdio.h>
#include<string.h>
void dlt(char* s1, char* s2)
{
    char* x = s1;
    char* y = s2;
    int i, a[256] = { 0 }, n = strlen(s2);
    for (i = 0; i < n; ++i)
        a[s2[i]] = 1;
    while (*x)
    {
        if (a[*x] == 0)
            *y++ = *x;
        x++;
    }
    *y = '\0';
}
int main()
{
    char s1[1000], s2[1000];
    gets(s1);
    gets(s2);
    dlt(s1, s2);
    printf("%s\n", s2);
    return 0;
}

2.读入一串以’?'结束的字符串,逆序输出。

法一:常规递归

#include <stdio.h>
#include <string.h>
char* reverse(char* s)
{
    if (!s)                    
        return NULL;                 
    int n = strlen(s);
    if (n > 1)
    {
        char t = s[0];
        s[0] = s[n - 1];
        s[n - 1] = '\0';        
        reverse(s + 1);            
        s[n - 1] = t;
    }
    return s;
}
int main()
{
    char str[100];
    gets(str);
    reverse(str);
    puts(str);
    return 0;
}

法二:投机取巧

#include <stdio.h>
void reverse()
{
    char c;
    scanf("%c", &c);
    if (c != '?')
    {
        reverse();
        printf("%c", c);
    }
}
int main()
{
    reverse();
    return 0;
}

3.递归将整数输出为字符串

void convert(int n, int m)
{
    int i;
    if ((i = n / 10) != 0)
        convert(i, m);
    putchar(n % 10 + '0');
    if (n != m) 
        printf("-");
}

int main() 
{
    int n;
    scanf("%d", &n);
    if (n < 0) 
    {
        printf("-");
        n = - n;
    }
    convert(n, n);
    printf("\n");
    return 0;
}

4.递归输出1–n的平方和

#include <stdio.h>
#include <math.h>

int sum(int n)
{
    if (n == 1)
        return 1;
    return n * n + sum(n - 1);
}

int main()
{
    int n;
    scanf("%d", &n);
    printf("%d", sum(n));
    return 0;
}

5.递归计算2+22+222+…

#include<stdio.h>
int f(int a, int n)
{
	if (n > 1)
		return a * n + f(a, n - 1) * 10;
	else
		return a;
}
int main()
{
	int a, n;
	scanf("%d %d", &a, &n);
	printf("%d", f(a, n));
	return 0;
}

在这里插入图片描述

6.递归求最大公约数

#include<stdio.h>
int gcd(int a, int b)
{
    if (a <= 0 || b <= 0) 
        return 0;    
    if (a % b == 0)
        return b;           
    else 
        gcd(b, a % b);               
}
int main()
{
    int a, b, c;
    scanf("%d,%d", &b, &c);
    a = gcd(b, c);
    printf("%d和%d的最大公约数为:%d\n", b, c, a);
}

7.递归输出x的n次方

#include<stdio.h>
double f(int x, int n)
{
	double s = 1;
	if (n > 0)
		s = x * f(x, n-1);
	else if (n == 0)
		s = 1;
	else 
		s = 1.00 / f(x, -n);
	return s;

}
int main()
{
	int x = 0, n = 0;
	scanf_s("%d %d", &x, &n);
    printf("%lf\n", f(x, n));
	return 0;
}

8. 递归计算下列式子的值

在这里插入图片描述

#include<stdio.h>
#include<math.h>
double f(double x, int n)
{
	if (n == 1)
		return sqrt(1 + x);
	else
		return sqrt(n + f(x, n - 1));
}
int main()
{
	double x;
	int n;
	scanf("%lf %d", &x, &n);
	printf("%lf", f(x, n));
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从FPGA说起的深度学习(六)-任务并行性

这是新的系列教程&#xff0c;在本教程中&#xff0c;我们将介绍使用 FPGA 实现深度学习的技术&#xff0c;深度学习是近年来人工智能领域的热门话题。在本教程中&#xff0c;旨在加深对深度学习和 FPGA 的理解。用 C/C 编写深度学习推理代码高级综合 (HLS) 将 C/C 代码转换为硬…

还在回想Midjourney的参数,Claude来帮你

本来是想整理一份Midjourne使用的参数表&#xff0c;看来是不用了&#xff0c;Claude很方便的就能帮到我们。 问下Claude: 你知道 Midjourne 的参数吗 Claude 回答如下&#xff1a; 是回答出来了&#xff0c;但是并不是非常的好&#xff0c;我们继续引导他一下&#xff1a; 你…

堆的实际应用(topk问题以及堆排序)

目录 前言&#xff1a; 一:解决topk问题 二:堆排序 【1】第一种方法(很少用) 【2】第二种方法(很实用) 前言&#xff1a; 上一次我们进行了二叉树的初步介绍并实现了堆的基本功能&#xff0c;但堆的作用并不是存储数据&#xff0c;它可以用来解决topk问题(求一组数据较大或…

【C语言】9000字长文操作符详解

简单不先于复杂&#xff0c;而是在复杂之后。 目录 1. 操作符分类 2. 算数操作符 3. 移位操作符 3.1 左移操作符 3.2 右移操作符 4. 位操作符 4.1 按位与 & 4.2 按位或 | 4.3 按位异或 ^ 4.4 一道变态的面试题 4.5 练习 5. 赋值操作符 5.1 复合赋值…

主流接口测试框架对比,究竟哪个更好用

公司计划系统的开展接口自动化测试&#xff0c;需要我这边调研一下主流的接口测试框架给后端测试&#xff08;主要测试接口&#xff09;的同事介绍一下每个框架的特定和使用方式。后端同事根据他们接口的特点提出一下需求&#xff0c;看哪个框架更适合我们。 需求 1、接口编写…

项目工作分解工具WBS

WBS工作分解结构&#xff08;Work Breakdown Structure&#xff09;&#xff0c;是一个描述思路的规划和设计工具&#xff0c;它可以清晰地表示各项目之间相互联系的结构&#xff0c;详细说明为完成项目所必须完成的各项工作&#xff0c;也可以向高层管理者和客户报告项目完成的…

【Redis】高可用架构之Cluster集群和分⽚

高可用架构之Cluster集群和分⽚1. 前言2. Cluster 模式介绍2.1 什么是Cluster模式&#xff1f;2.2 为什么需要Cluster模式&#xff1f;2.2.1 垂直拓展&#xff08;scale up&#xff09;和水平拓展&#xff08;scale out&#xff09;2.2.2 Redis Cluster 提供的好处2.2.3 Redis …

学术期刊《广西物理》简介及投稿要求

学术期刊《广西物理》简介及投稿要求 《广西物理》&#xff08;季刊&#xff09;创刊于1980年&#xff0c;是由广西师范大学&#xff1b;广西物理学会主办的物理杂志。本刊报道与物理有关的基础研究、应用研究以及与此有关的交叉学科研究领域的最新重要研究成果和发展趋势&…

编码与加密基础笔记

文章目录&#x1f449;1、ASCII 编码&#x1f449;2、了解Base64&#x1f449;3、MD5消息摘要算法&#x1f449;4、对称加密与 AES&#x1f449;5、非对称加密与 RSA参考书籍《Python 3 反爬虫原理与绕过实战》&#x1f449;1、ASCII 编码 ASCII编码实际上约定了字符串和二进制…

Python中使用matplotlib时显示中文乱码_(或更改字体)

一、问题描述 在使用matplotlib绘制可视化图表时&#xff0c;图表的中文显示乱码&#xff0c;只能正常显示英文内容&#xff0c;如下图所示&#xff1a; 二、问题分析 一般显示乱码是由于编码问题导致的&#xff0c;而matplotlib 默认使用ASCII 编码&#xff0c;但是当使用pypl…

全语言通用的ASCIL表讲解,这一篇就够了

目录 ASCII码诞生背景 ASCII码特性 可显示字符 大佬们可以看这个 小白们看这个更详细 对控制字符的解释 ASCII码诞生背景 在计算机中&#xff0c;所有的数据在存储和运算时都要使用二进制表示。例如&#xff0c;像a、b、c、d这样的52个字母&#xff08;包括大写&#xf…

Winnolin 绘制药时曲线图C-T

文章目录前言一、各受试者C-T图1.导入数据2.设置-运行2.查看结果&#xff0c;修改参数二、各制剂C-T图1.导入数据2.设置-运行2.查看结果&#xff0c;修改参数三、平均C-T图1.计算统计量2.设置统计量计算参数&#xff08;Set Up&#xff09;3.绘图XY Plot4.查看结果&#xff0c;…

Java多线程基础面试总结(三)

线程的生命周期和状态 Java 线程在运行的生命周期中的指定时刻只可能处于下面 6 种不同状态的其中一个状态&#xff1a; NEW&#xff1a;初始状态&#xff0c;线程被创建出来&#xff0c;但是还没有调用start()方法。RUNABLE&#xff1a;运行中状态&#xff0c;调用了start()…

Java设计模式 11-代理模式

代理模式 一、 代理模式(Proxy) 1、代理模式的基本介绍 代理模式&#xff1a;为一个对象提供一个替身&#xff0c;以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是: 可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理的对象…

时间序列的平稳性

如何检查时间序列是否平稳&#xff0c;如果它是非平稳的&#xff0c;我们可以怎么处理 当未来的数据与现在相似时&#xff0c;它更容易建模。平稳性描述了时间序列的统计特征不随时间变化的概念。因此一些时间序列预测模型&#xff0c;如自回归模型&#xff0c;依赖于时间序列…

IoC 之 Spring 统一资源加载策略【Spring源码】

《JavaPub源码》 文末是系列文章 IoC 之 Spring 统一资源加载策略 Spring 框架的核心是 IoC&#xff08;Inversion of Control&#xff09;&#xff0c;它将应用程序的对象依赖关系管理和控制反转到容器中。在 Spring IoC 容器中&#xff0c;组件的创建和配置是通过外部配置…

IDEA 运行启动 pulsar-manager项目

IDEA 运行 pulsar-manager项目&#xff08;gradle&#xff09; 1、下载pulsar-manager源码 giithub地址 smn-manager 2、将项目导入IDEA并初始化项目 问题&#xff1a;SSL peer shut down incorrectly 将https改成http之后又会出现 Server returned HTTP response code: …

服务(第四篇)Apache的网页优化

一、网页压缩 ①首先检查是否安装 mod_deflate 模块 ②如果没有安装mod_deflate 模块&#xff0c;重新编译安装 Apache 添加 mod_deflate 模块 yum -y install gcc gcc-c pcre pcre-devel zlib-devel cd /opt/httpd-2.4.29/ ./configure \ --prefix/usr/local/httpd \ --enabl…

HDFS学习笔记 【Namenode/DN管理】

说明 DN管理管理了什么&#xff1f; NN上如何表示DN DN存储和块的关系 梳理DatanodeManager存储类 DatanodeDescriptor DN的抽象&#xff0c;依次继承。每一层增加一点额外的信息。 DatanodeId 基本的DN信息&#xff0c;hostname&#xff0c;数据传输接口&#xff0c;info服…

QTableView 设置selection-background-color和border不同时生效问题记录

问题&#xff1a; qtableview在使用过程种设置qss样式&#xff0c;设置选中时的背景色&#xff0c;以及边框颜色&#xff0c;不能同时生效。 解决&#xff1a; 在qss中设置QTableView的样式时&#xff0c;对于item项&#xff0c;selection-background-color的参数设置应该分…