2.11:递归操作

news2024/11/24 22:52:23

1.递归实现n!

程序代码:

  1 #include<stdio.h>
  2 #include<string.h>
  3 #include<stdlib.h>
  4 int fun(int n);
  5 int main(int argc, const char *argv[])
  6 {
  7     int n;
  8     printf("please enter n:");
  9     scanf("%d",&n);
 10     if(n<1)
 11         printf("enter error\n");
 12     else
 13     {
 14         int s=fun(n);
 15         printf("%d!=%d\n",n,s);
 16     }
 17     return 0;
 18 }
 19 int fun(int n)
 20 {   
 21     if(n==0)
 22         return 1;
 23     else
 24         return n*fun(n-1);
 25 }  

运行结果:

2.递归实现0-n的和

程序代码:

  1 #include<stdio.h>
  2 #include<string.h>
  3 #include<stdlib.h>
  4 int fun(int n);
  5 int main(int argc, const char *argv[])
  6 {
  7     int n;
  8     printf("please enter n:");
  9     scanf("%d",&n);
 10     if(n<0)
 11         printf("enter error\n");
 12     else
 13     {
 14         int sum=fun(n);
 15         printf("sum=%d\n",sum);
 16     }
 17     return 0;
 18 }
 19 int fun(int n)
 20 {
 21     if(n==0)
 22         return 0;
 23     else
 24         return n+fun(n-1);
 25 }

运行结果:

3.递归实现斐波那契数列

程序代码:

  1 #include<stdio.h>
  2 #include<string.h>
  3 #include<stdlib.h>
  4 int fun(int n);
  5 int main(int argc, const char *argv[])
  6 {   
  7     int n;
  8     printf("please enter n:");
  9     scanf("%d",&n);
 10     int s=fun(n);
 11     printf("sum=%d\n",s);
 12     return 0;
 13 }
 14 int fun(int n)
 15 {   
 16     if(n<=0)
 17     {   
 18         printf("enter error\n");
 19         return -1;
 20     }
 21     else if(n==1||n==2)
 22         return 1;
 23     else
 24         return fun(n-1)+fun(n-2);
 25 }  

运行结果:

4.递归实现二进制转换

程序代码:

  1 #include<stdio.h>
  2 #include<string.h>
  3 #include<stdlib.h>
  4 int rev(int num);
  5 int main(int argc, const char *argv[])
  6 {   
  7     int num;
  8     printf("please enter num:");
  9     scanf("%d",&num);
 10     rev(num);
 11     puts("");
 12     return 0;
 13 }
 14 int rev(int num)
 15 {
 16     if(num==0)
 17         return 0;
 18     else
 19     {
 20         rev(num/2);
 21         printf("%d",num%2);
 22     }
 23 } 

运行结果:

5.递归实现计算各个位数字之和

程序代码:

  1 #include<stdio.h>
  2 #include<string.h>
  3 #include<stdlib.h>
  4 int fun(int num);
  5 int main(int argc, const char *argv[])
  6 {   
  7     int num;
  8     printf("please enter num:");
  9     scanf("%d",&num);
 10     int s=fun(num);
 11     printf("sum=%d\n",s);
 12     return 0;
 13 }
 14 int fun(int num)
 15 {   
 16     if(num==0) 
 17         return 0;
 18     else
 19         return num%10+fun(num/10);
 20 }  

运行结果:

6.递归实现计算各个位数字的乘积

程序代码:

  1 #include<stdio.h>
  2 #include<string.h>
  3 #include<stdlib.h>
  4 int fun(int n);
  5 int main(int argc, const char *argv[])
  6 {   
  7     int n;
  8     printf("please enter n:");
  9     scanf("%d",&n);
 10     if(n==0)
 11         printf("%d",n);
 12     else
 13     {   
 14         int s=fun(n);
 15         printf("sum=%d\n",s);
 16     }
 17     return 0;
 18 }
 19 int fun(int n)
 20 {   
 21     if(n>=0&&n<=9)
 22         return n;
 23     else
 24         return n%10*fun(n/10);
 25 }    

运行结果:

7.递归实现计算单词逆置

程序代码:

  1 #include<stdio.h>
  2 #include<string.h>
  3 #include<stdlib.h>
  4 void rev(char *i,char *j);
  5 int main(int argc, const char *argv[])
  6 {
  7     char str[40]="";
  8     printf("please enter str:");
  9     gets(str);
 10     //单词计数
 11     int num=0,word=0;
 12     char c;
 13     for(int i=0;(c=str[i])!='\0';i++)
 14     {
 15         if(c==' ')
 16             word=0;
 17         else if(word==0)
 18         {
 19             word=1;
 20             num++;
 21         }
 22     }
 23     printf("word num=%d\n",num);
 24     //单词逆置
 25     char *end=str;
 26     rev(str,str+strlen(str)-1);
 27     while(*end!='\0')
 28     {
 29         char *start=end;
 30         while(*end!=' '&&*end!='\0')
 31             end++;
 32         rev(start,end-1);//单词逆置
 33         if(*end!='\0')
 34             end++;
 35     }
 36     printf("%s",str);
 37     puts("");
 38     return 0;
 39 }
 40 void rev(char *i,char *j)
 41 {
 42     while(i<j)
 43     {
 44         char t=*i;*i=*j;*j=t;
 45         i++;j--;
 46     }
 47 } 

运行结果:

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

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

相关文章

嵌入式C语言学习——基于Linux与GCC(二)

系列文章目录 一.C语言常用关键字及运算符操作 文章目录 系列文章目录内存四区指针指针概述指针 修饰符constvoliatiletypedef 指针运算符多级指针 数组数组空间字符空间及地址 结构体、共用体定义、字节对齐位域 内存分布图段错误分析 内存四区 C/C语言的内存四区&#xff…

LabVIEW伺服阀动静态测试系统

LabVIEW伺服阀动静态测试系统 基于LabVIEW开发了一套伺服阀动静态测试系统&#xff0c;提高伺服阀在电液伺服控制系统中的性能测试精度和效率。通过设计合理的液压系统、电控系统及软件系统&#xff0c;实现了伺服阀的动态和静态特性测试&#xff0c;采用流量-压力双闭环稳态控…

CSS之BFC

BFC概念 BFC&#xff08;Block Formatting Context&#xff09;即块级格式化上下文&#xff0c;是Web页面的可视CSS渲染的一部分。它是一个独立的渲染区域&#xff0c;让其中的元素在布局上与外部的元素互不影响。简单来说&#xff0c;BFC提供了一个环境&#xff0c;允许内部的…

【51单片机】初学者必读的一文【探究定时计数器与中断系统是如何配合起来的?】(9)

前言 大家好吖&#xff0c;欢迎来到 YY 滴单片机系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过单片机的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…

AI工具导航网站介绍

给大家介绍一个AI工具导航网站&#xff1a;https://www.ainav.net/&#xff0c;里面有多种AI工具及开源AI应用。

Qt:自定义信号,信号emit,传参问题,信号槽与moc

一、自定义信号&#xff0c;信号emit 1、自定义信号 在头文件中 加入signals&#xff1a; 就可以编写信号 2、emit emit的作用是通知信号发生 二、跨UI控件传参 每次按Dialog添加按钮主控件数字会增长 // .h private slots:void on_btnAdd_clicked(); signals:void sign…

SelfAttention|自注意力机制ms简单实现

自注意力机制学习有感 观看b站博主的讲解视频以及跟着他的pytorch代码实现mindspore的自注意力机制&#xff1a;up主讲的很好&#xff0c;推荐入门自注意力机制。 import mindspore as ms import mindspore.nn as nn from mindspore import Parameter from mindspore import …

每日五道java面试题之java基础篇(九)

目录&#xff1a; 第一题 你们项⽬如何排查JVM问题第二题 ⼀个对象从加载到JVM&#xff0c;再到被GC清除&#xff0c;都经历了什么过程&#xff1f;第三题 怎么确定⼀个对象到底是不是垃圾&#xff1f;第四题 JVM有哪些垃圾回收算法&#xff1f;第五题 什么是STW&#xff1f; 第…

Spring Boot 笔记 017 创建接口_新增文章

1.1实体类增加校验注释 1.1.1 自定义校验 1.1.1.1 自定义注解 package com.geji.anno;import com.geji.validation.StateValidation; import jakarta.validation.Constraint; import jakarta.validation.Payload; import jakarta.validation.constraints.NotEmpty;import jav…

(03)Hive的相关概念——分区表、分桶表

目录 一、Hive分区表 1.1 分区表的概念 1.2 分区表的创建 1.3 分区表数据加载及查询 1.3.1 静态分区 1.3.2 动态分区 1.4 分区表的本质及使用 1.5 分区表的注意事项 1.6 多重分区表 二、Hive分桶表 2.1 分桶表的概念 2.2 分桶表的创建 2.3 分桶表的数据加载 2.4 …

kali无线渗透之用wps加密模式破解出wpa模式的密码12

WPS(Wi-Fi Protected Setup&#xff0c;Wi-Fi保护设置)是由Wi-Fi联盟推出的全新Wi-Fi安全防护设定标准。该标准推出的主要原因是为了解决长久以来无线网络加密认证设定的步骤过于繁杂之弊病&#xff0c;使用者往往会因为步骤太过麻烦&#xff0c;以致干脆不做任何加密安全设定&…

飞天使-k8s知识点17-kubernetes实操2-pod探针的使用

文章目录 探针的使用容器探针启动实验1-启动探针的使用-startupprobeLiveness Probes 和 Readiness Probes演示若存在started.html 则进行 探针的使用 kubectl edit deploy -n kube-system corednslivenessprobe 的使用 livenessProbe:failureThreshold: 5httpGet:path: /heal…

谷歌搜索技巧与 ChatGPT 实用指南:提升你的在线生产力

探索谷歌搜索技巧&#xff0c;提升搜索效率 前言 在搜索三巨头百度、必应、谷歌中&#xff0c;谷歌在搜索精确度以及多语言兼容性方面有明显的优势。其次在国内想要使用谷歌搜索你需要会科学上网&#xff08;这里不说&#xff09;。 一.排除干扰内容&#xff08;广告&#xff…

RAG (Retrieval Augmented Generation)简介

1. 背景 目前大模型很多&#xff0c;绝大部分大模型都是通用型大模型&#xff0c;也就是说使用的是标准的数据&#xff0c;比如wikipedia&#xff0c;百度百科&#xff0c;。。。。 中小型企业一般都有自己的知识库&#xff0c;而这些知识库的数据没有在通用型的大模型中被用到…

mysql数据库 mvcc

在看MVCC之前我们先补充些基础内容&#xff0c;首先来看下事务的ACID和数据的总体运行流程 数据库整体的使用流程: ACID流程图 mysql核心日志: 在MySQL数据库中有三个非常重要的日志binlog,undolog,redolog. mvcc概念介绍&#xff1a; MVCC&#xff08;Multi-Version Concurr…

【MySQL】外键约束的删除和更新总结

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-7niJLSFaPo0wso60 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

MySQL 基础知识(一)之数据库和 SQL 概述

目录 1 数据库相关概念 2 数据库的结构 ​3 SQL 概要 4 SQL 的基本书写规则 1 数据库相关概念 数据库是将大量的数据保存起来&#xff0c;通过计算机加工而成的可以进行高效访问的数据集合数据库管理系统&#xff08;DBMS&#xff09;是用来管理数据库的计算机系统&#xf…

HCIA-HarmonyOS设备开发认证V2.0-轻量系统内核基础-互斥锁mux

目录 一、互斥锁基本概念二、互斥锁运行机制三、互斥锁开发流程四、互斥锁使用说明五、互斥锁接口六、代码分析&#xff08;待续...&#xff09; 一、互斥锁基本概念 互斥锁又称互斥型信号量&#xff0c;是一种特殊的二值性信号量&#xff0c;用于实现对共享资源的独占式处理。…

Web 目录爆破神器:Dirsearch 保姆级教程

一、介绍 dirsearch 是一款用于目录扫描的开源工具&#xff0c;旨在帮助渗透测试人员和安全研究人员发现目标网站上的隐藏目录和文件。与 dirb 类似&#xff0c;它使用字典文件中的单词构建 URL 路径&#xff0c;然后发送 HTTP 请求来检查这些路径是否存在。 以下是 dirsearc…

Python算法深度探索:从基础到进阶

引言 本文将引导您从Python的基础算法出发&#xff0c;逐步深入到更复杂的算法领域。我们将探讨数组操作、图算法以及机器学习中的常用算法&#xff0c;并通过实例和代码展示它们在实际应用中的价值。 1. 基础算法&#xff1a;数组操作 数组操作是算法实现中非常基础且重要的一…