算法设计与分析2023秋-头歌实验-实验一 循环与递归

文章目录

  • 第1关:从自然数中取3个数进行组合之循环算法
    • 任务描述
    • 编程要求
    • 测试说明
    • 参考答案
  • 第2关:从自然数中取3个数进行组合之递归算法
    • 任务描述
    • 编程要求
    • 测试说明
    • 参考答案
  • 第3关:求n的阶乘n!
    • 任务描述
    • 编程要求
    • 测试说明
    • 参考答案
  • 第4关:求斐波那契额数列的前10项
    • 任务描述
    • 编程要求
    • 测试说明
    • 参考答案

第1关:从自然数中取3个数进行组合之循环算法

任务描述

本关任务:用循环算法找出 5 个自然数中取 3 个数的组合。

编程要求

请在右侧编辑器Begin-End处补充代码,完成本关任务。

测试说明

平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:
测试输入:5 3 (n=5,r=3;,表示从1,2,3,4,5自然数中选择 3 个数)
预期输出:

1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
3 4 5

参考答案

#include <stdio.h>void combloop1(int n, int r)
{/**********  Begin  **********/for(int i=1;i<=n;i++){for(int j=2;j<=n;j++){for(int k=3;k<=n;k++)if((i<j)&&(j<k)){printf("%d %d %d",i,j,k);printf("\n");}}}/**********  End  **********/
}void main()
{int n,r;scanf("%d%d",&n,&r);combloop1(n,r);
}

第2关:从自然数中取3个数进行组合之递归算法

任务描述

本关任务:用递归算法找出 5 个自然数中取 3 个数的组合。

编程要求

请在右侧编辑器Begin-End处补充代码,完成本关任务。

测试说明

平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:
测试输入:5 3 (n=5,r=3;,表示从1,2,3,4,5自然数中选择 3 个数)
预期输出:

5 4 3
5 4 2
5 4 1
5 3 2
5 3 1
5 2 1
4 3 2
4 3 1
4 2 1
3 2 1

参考答案

#include <stdio.h>
int a[100];
void combrecur(int n, int r)
{/**********  Begin  **********/int i,j;for(i=n;i>=r;i--){ a[r]=i;if(r>1){combrecur(i-1,r-1);}else{for(j=a[0];j>0;j--){printf("%d",a[j]);printf(" ");}printf("\n");}}/**********  End  **********/
}void main()
{/**********  Begin  **********/int n,r;scanf("%d %d",&n,&r);if(n>r){a[0]=r;combrecur(n,r);}/**********  End  **********/
}

第3关:求n的阶乘n!

任务描述

本关任务:用循环和递归算法求 n(小于 10 的正整数) 的阶乘 n!。

编程要求

请在右侧编辑器Begin-End处补充代码,完成本关任务。

测试说明

平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:
测试输入:10
预期输出:

递归算法求得10! = 3628800 
循环算法求得10! = 3628800

参考答案

#include <stdio.h>
int s=1;
float fac_recursion(int n)
{/**********  Begin  **********/
if(n==1)
return 1;
else
return n*fac_recursion(n-1);/**********  End  **********/
}float fac_loop(int n)
{/**********  Begin  **********/
for(int i=n;i>=1;i--){
s*=i;
}
return s;/**********  End  **********/
}void main()
{int n;float y;scanf("%d",&n);y=fac_recursion(n);printf("递归算法求得%d! = %.0f \n",n,y);y=fac_loop(n);printf("循环算法求得%d! = %.0f \n",n,y);
}

第4关:求斐波那契额数列的前10项

任务描述

本关任务:用循环和递归算法求斐波那契额数列的前 10 项。

编程要求

请在右侧编辑器Begin-End处补充代码,完成本关任务。

测试说明

平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:
测试输入:10
预期输出:

递归算法求的前10项为:  1  1  2  3  5  8 13 21 34 55
循环算法求的前10项为:  1  1  2  3  5  8 13 21 34 55

参考答案

#include <stdio.h>
int fibo_recur(int n)
{/**********  Begin  **********/if(n==1||n==2)return 1;elsereturn fibo_recur(n-1)+fibo_recur(n-2);/**********  End  **********/
}int fibo_loop(int n)
{/**********  Begin  **********/int a=1,b=1,c;if(n<=2)return a;else{for(int i=3;i<=n;i++){c=a+b;a=b;b=c;}return c;}/**********  End  **********/
}void main()
{int n,y,i;scanf("%d",&n);printf("递归算法求的前10项为:");for(i=1; i<=n; i++){y=fibo_recur(i);printf("%3d",y);}printf("\n循环算法求的前10项为:");for(i=1; i<=n; i++){y=fibo_loop(i);printf("%3d",y);}
}

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

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

相关文章

【数据结构复习之路】图(严蔚敏版)两万余字超详细讲解

专栏&#xff1a;数据结构复习之路 复习完上面四章【线性表】【栈和队列】【串】【数组和广义表】【树和二叉树】&#xff0c;我们接着复习 图&#xff0c;这篇文章我写的非常详细且通俗易懂&#xff0c;看完保证会带给你不一样的收获。如果对你有帮助&#xff0c;看在我这么辛…

奥迦插件23.12.5支持32和64位图色模拟(和大漠插件类似)

源码名称&#xff1a;奥迦插件23.12.5和大漠插件类似奥迦插件在Windows 10操作系统上使用Visual Studio 2019编写,适用于所有较新的Windows平台,是一款集网络验证,深度学习,内核,视觉,文字,图色,后台,键鼠,窗口,内存,汇编,进程,文件,网络,系统,算法及其它功能于一身的综合插件插…

计算两个复数之积(结构体函数)

本题要求实现一个计算复数之积的简单函数。 函数接口定义&#xff1a; struct complex multiply(struct complex x, struct complex y); 其中struct complex是复数结构体&#xff0c;其定义如下&#xff1a; struct complex{int real;int imag; }; 裁判测试程序样例&#…

针对海量数据的存储与访问瓶颈的解决方案

背景 在当今这个时代&#xff0c;人们对互联网的依赖程度非常高&#xff0c;也因此产生了大量的数据&#xff0c;企业视这些数据为瑰宝。而这些被视为瑰宝的数据为我们的系统带来了很大的烦恼。这些海量数据的存储与访问成为了系统设计与使用的瓶颈&#xff0c;而这些数据往往存…

Python装饰器泛化公有和私有属性

Python装饰器是一种强大的功能&#xff0c;允许程序员修改函数或类的行为。通过装饰器&#xff0c;可以在不修改函数或类本身的情况下&#xff0c;添加额外的功能或修改其行为。本文将深入探讨如何利用装饰器来泛化公有和私有属性的访问和修改方式。 Python装饰器的概念和作用…

正点原子驱动开发BUG(一)--SPI无法正常通信

目录 一、问题描述二、讲该问题的解决方案三、imx6ull的spi适配器驱动程序控制片选分析3.1 设备icm20608的驱动程序分析3.2 imx的spi适配器的驱动程序分析 四、BUG修复测试五、其他问题 一、问题描述 使用正点的im6ull开发板进行spi通信驱动开发实验的时候&#xff0c;主机无法…

install cuda cudnn tersorRT

# 安装 $ ubuntu-drivers devices$ sudo apt-get install nvidia-driver-470-server # 推荐是server&#xff0c;都可以。#delelt sudo apt --purge remove nvidia-* CUDA Toolkit Archive | NVIDIA Developerhttps://developer.nvidia.com/cuda-toolkit-archive CUDA Toolk…

装饰器设计模式

2. 装饰器设计模式 2.1 实现原理 装饰器设计模式&#xff08;Decorator&#xff09;是一种结构型设计模式&#xff0c;它允许动态地为对象添加新的行为。它通过创建一个包装器来实现&#xff0c;先将对象放入一个装饰器类中&#xff0c;再将装饰器类放入另一个装饰器类中&…

在4*4的平面上计算2a1+1+1

0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 在4*4的平面上有2个点&#xff0c;保持2a1的结构&#xff0c;然后向剩余的14个格子里随机扔2个石子。 共有14*13/291种可能 1 - - - 2 - - - 3 - - 1 4 - - - 1 1 - 1 1 - - - - - - - 1 - - …

如何免费搭建私人电影网站(一)

前言&#xff1a;在线看电影经常会出现烦人的广告&#xff0c;为了不浪费时间看广告&#xff0c;有必要做自己的专属网站。 准备工作&#xff1a; 1、申请免费域名&#xff08;也可以花钱注册域名相对稳定&#xff09;链接: 申请免费域名方法 2、申请免费主机&#xff08;也可以…

JAVA:深入探讨Java 8 Stream的强大功能与用法

1、简述 Java 8引入了Stream API&#xff0c;为处理集合数据提供了一种更为强大和灵活的方式。Stream是一种抽象的数据结构&#xff0c;它允许你以一种声明性的方式处理数据集合。与传统的集合操作不同&#xff0c;Stream并不是一个存储数据的数据结构&#xff0c;而是在源数据…

代码随想录 518. 零钱兑换 II

题目 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带符号整数。…

Linux线程——常用API

线程创建 函数原型及头文件 #include <pthread.h> int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg);参数解读 tidp当pthread_create成功返回时&#xff0c;由tidp指向的内存单元…

接口返回HTML页面详解

import requests from bs4 import BeautifulSoup import re import jsonurl https://listado.mercadolibre.com.mx/hogar-muebles-jardin/cocina/almacenamiento-organizacion/organizadores-cocina/_CustId_570995983_PrCategId_AD# 添加 headers 和 cookies headers {User-…

JS函数全解、闭包、递归、柯里化

函数的返回值由什么确定&#xff1f; 影响因素&#xff1a; 1.调用时输入的参数params 2.定义时的环境env let x1 x let a 1 function f1(x1){return x1 a }a 3 {let a 2console.log(f1(x)) // x3} a 4// 这个例子说明a是定义时的a &#xff0c;而不是执行时的a …

深度学习网站集锦1

深度学习网站集锦 1. https://paperswithcode.com/导航栏论文和代码做了对应可以下载数据集角度看对应相关paper code看神经网络常用方法paper及实现code有什么用处还有哪些网站 1. https://paperswithcode.com/ 超简单实用&#xff0c;推荐的深度学习科研必备网站&#xff08…

第三周:Python能力复盘

资料&#xff1a; 《笨办法学Python》阅读地址&#xff1a;https://www.bookstack.cn/read/LearnPython3TheHardWay 《廖雪峰Python教程》阅读地址&#xff1a;http://t.cn/RK0qGu7 《机器学习numpy与pandas基础》&#xff1a;https://zhuanlan.zhihu.com/p/639733816 《matplo…

组态和SCADA

在工业自动化领域&#xff0c;"组态"&#xff08;SCADA&#xff0c;Supervisory Control and Data Acquisition&#xff09;是一种用于监控和控制工业过程的系统。它是一种集成了数据采集、实时监控、远程操作和数据分析等功能的软件系统。 组态系统通常由以下几个主…

智能网关是什么

智能网关&#xff08;Smart Gateway&#xff09;是一种设备或系统&#xff0c;用于连接和交互不同类型的设备、传感器、终端和网络。它充当连接物联网&#xff08;IoT&#xff09;设备和互联网的桥梁&#xff0c;提供数据传输、通信协议转换和智能控制等功能。 智能网关在物联…

java多个设计模式解决大量if-else堆积

当面对大量的 if-else 语句时&#xff0c;可以考虑使用以下几种常见的设计模式来减少代码的复杂性和维护成本&#xff1a; 策略模式&#xff08;Strategy Pattern&#xff09;&#xff1a;将各个分支的逻辑封装成不同的策略类&#xff0c;然后通过一个上下文类来根据条件选择合…