递归法算24

使用递归和非递归求f(m,n) 递归方法如下: int f(int m, int n) { if (1 == m) { return n; } else if (1 == n) { return m; } return f(m, n - 1) + f(m - 1, n); } 非递归方法如下: int f(int m, int n) { int a[100][100]; for 阅读详情

/*************************************************/
/*  算24                                         */
/*  皮业勇                                       */
/*  2005.9.20                                    */
/*  piyeyong@gmail.com                           */
/*************************************************/
#include<stdio.h>
#define N 4
#include<math.h>
float cun[N][4];

/* 定义函数f,功能:对m和n进行四则运算,参数b代表四则运算法则(1~6) */
float f(int b,float m,float n)  
{
float c;
if(b==1)
    c=m+n;
else if(b==2)
    c=m-n;
else if(b==3)
    c=m*n;
else if (b==4&&n!=0)
    c=m/n;
else if (b==5&&m!=0)
    c=n/m;
else if(b==6)
    c=n-m;
else
    c=-10000;
return (c);
}

/* 定义函数pf,功能:输出,参数b代表四则运算规则(1~6) */
void pf(int b,float m,float n)   
{if(b==1)
printf("%.3f+%.3f=%.3f/t",m,n,f(1,m,n));
else if(b==2)
printf("%.3f-%.3f=%.3f/t",m,n,f(2,m,n));
else if(b==3)
printf("%.3f*%.3f=%.3f/t",m,n,f(3,m,n));
else if(b==4&&n!=0)
printf("%.3f/%.3f=%.3f/t",m,n,f(4,m,n));
else if(b==5&&m!=0)
printf("%.3f/%.3f=%.3f/t",n,m,f(5,m,n));
else if(b==6&&m!=0)
printf("%.3f-%.3f=%.3f/t",n,m,f(6,m,n));
}

/* 打印结果 */
void print()
{
 for(int i = 1; i < N; i ++)
  pf(cun[i][1],cun[i][2],cun[i][3]);
 putchar('/n');
}

/* 递归的计算,n表示要计算的数的个数,a数组中存放要计算的数 */
void work(float a[], int n)
{
 float b[N+1];
 int l, i;  // i表示四则运算法则

 if(n < 2)
  printf("argument error/n");
 if(n == 2) {
  for(i = 1; i <= 6; i ++)
  {
   if( ((f(i, a[1], a[2]) - 24) < 0.0001) &&
    ((f(i, a[1], a[2]) - 24) > -0.0001 ) )
   {
    // 把本次计算式存入cun二维数组中
    cun[N+1-n][1] = i;
    cun[N+1-n][2] = a[1];
    cun[N+1-n][3] = a[2];
    print();
   }
  }
 }
 else {
  // j,k两个循环表示本次运算a[j],a[k]两个数,运算规则是i(1~6)
  for( int j = 1; j < n; j ++)
  {
   for( int k = j+1; k <= n; k ++)
   {
    for(i = 1; i <= 6; i ++)
    {
     // 把本次计算式存入cun二维数组中
     cun[N+1-n][1] = i;
     cun[N+1-n][2] = a[j];
     cun[N+1-n][3] = a[k];

     // 设置递归时用到的数组b
     for(l = 1; l <=n; l ++)
      b[l] = a[l];
     b[j] = f(i, a[j], a[k]);
     b[k] = a[n];
     work(b, n-1);
    }
   }
  }
 }

}

void main()
{
 int i;
 float a[N];


 for(i=1; i<=N; i++)
  scanf("%f",&a[i]);
 work(a, N);

 return;
}

算24 递归 C++ 算24 输入:输入数据包括多行,每行给出一组测试数据,包括4个小于10个正整数。最后一组测试数据中包括4个0,表示输入的结束,这组数据不用处理。 输出:对于每一组测试数据,输出一行,如果可以得到24,输出“YES”;否则,输出“NO”。 样例输入 5 5 5 1 1 1 4 2 0 0 0 0 样例输出 YES NO #include&lt;iostream&gt; #include&lt;c... 阅读详情

相关推荐

算法学习3.4递归之算24

例题:算24 给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。现在的问题是,是否存在一种方式使得得到的表达式的结果等于24。 这里加减乘除以及括号的运算结果和运算的优先级跟我们平常的定义一致(这里的除法定义是实数除法)。 比如,对于5,5,5,1,我们知道5 * (5 – 1 / 5) = 24,因此可以得到24。又比如,对于1,1,4,2,我们怎么都...

weixin_42503072的博客 1579

递归函数

我们把一个直接调用自己或通过一系列的调用语句间接地调用自己的函数,称作递归函数。 递归有一个最重要的要求:必须要有结束条件,否则将陷入无穷无尽的调用中。 在我看来,理解递归的最大的难度就是,无法理解它的调用顺序,我们都知道递归的顺序是倒着的,那么为什么呢? 我也是今天才想明白,首先,大家一定不能被使用时不断重复的名字所迷惑,它的本质就是一个函数在调用另一个函数。 比如说有如下代码: #...

yangwenxiao123456的博客 399

24点游戏递归法

24点游戏是经典的纸牌益智游戏。 常见游戏规则:    从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏。 基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题。           1.程序风格良...

qq_36691353的博客 3301

c语言fun函数递归,C语言之递归函数的设计与调用

函数是可以嵌套调用的,即在某一个函数中的语句可以是对另一个函数的调用,例如:···main(){float t;int x,y;t=fun1(x,y);···}float fun1(int a,int b){int z;z=fun2(a+b,a-b);···}int fun2(int m,int n){···}···fun1()和fun2()是两个独立的函数,在fun1的函数体内有包括了对fun2...

weixin_36431035的博客 2902

c语言递归解24点游戏

c语言使用递归解24点游戏的小程序,程序中有一个小缺陷,但基本的算法是正确的

c语言24点程序,简单的递归算法

大二程序设计作业

递归算算20的阶乘

计算20 的阶乘 大多数人第一个想法会是使用for循环实现,当然是没问题的 for循环: function caculator(index){ let sum =1 for(var i=0;i<index;i++){ sum = sum*index } return sum } 但是面试的时候通常面试官会问有没有比的办法,答案是肯定的 递归方法: function diGui (x){ if(x==0){ return 1

qq_35661041的博客 1644

Unity 实现动态网格地图生成与交互组件

本文详细介绍了在Unity中实现动态网格地图生成与交互组件的完整方案。从基础网格单元实现到高级交互功能,涵盖网格生成器核心逻辑、事件驱动架构、性能优化技巧以及六边形网格等特殊实现。特别适合游戏开发者学习如何构建战棋、模拟经营类游戏的可交互地图系统,提升开发效率与用户体验。

weixin_29015483的博客 1068

递归方法求20!

首先要知道什么是阶乘 比如5!= 54321 那么就能想到每次 乘一个比初始值减一的数 思路:如果初始数字为一,则直接返回1 大于1则每次减一 function numFactorial($n) { if($n>1) return $num = $n * numFactorial($n-1); else return $n; } $num = numFactorial...

jerry的博客 1805

Greenplum基础

CREATE DATABASE 是 SQL 命令,用于创建一个新的数据库。name 是你要创建的数据库的名称。这个名称是必须的,并且在同一个数据库服务器上必须是唯一的。可选项,OWNER 指定了新数据库的所有者,如果未指定,新数据库的所有者默认是执行该命令的用户。dbowner 是数据库所有者的用户名。可选项,TEMPLATE 指定了用于创建新数据库的模板。在 PostgreSQL 和 GreenPlum 中,通常有一个名为 template1 的默认模板。如果不指定,就会使用这个默认模板。

m0_57697768的博客 1206

为什么你的单细胞数据总有问题?可能是忽略了scDblFinder这个神器

本文深入剖析了单细胞数据分析中异质性双细胞这一常见但易被忽视的痛点,并重点介绍了scDblFinder这一神器。scDblFinder通过机器学习模型,能精准识别并过滤同一样本内的异质性双细胞,有效解决其导致的聚类模糊、信号混淆等问题,从而显著提升数据洁净度与下游分析结果的可靠性。

brandy的博客 453

常见编程问题之速算24点两种解法

之前面试某大厂的时候碰到让写速算24点的程序,当时使用了保利排序,感觉写的不是很好,这里再总结一下。 一.速算24点游戏描述: “巧算24点”是一种数学游戏,游戏方式简单易学,能健脑益智,是一项极为有益的活动.“巧算24点”的游戏内容如下:一副牌中抽去大小王剩下52张,(如果初练也可只用1~10这40张牌)任意抽取4张牌(称牌组),用加、减、乘、除(可加括号)把牌面上的数算成24.每张牌必须用...

skj1995的博客 3376

Python | 处理CMIP6 NC数据,以tas为例

各位同学,一般在文章最后一章我们可能会做不同气候情景下变量的未来时空变化特征,类似上图。从cmip6下载的nc数据常需要转换格式、裁剪到研究区和重采样等,本期代码可以解决这类问题。

qq_48539301的博客 1384

【Python数据结构与算法】递归----算24

给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。现在的问题是,是否存在一种方式使得得到的表达式的结果等于24。比如,对于5,5,5,1,我们知道5 * (5 – 1 / 5) = 24,因此可以得到24。又比如,对于1,1,4,2,我们怎么都不能得到24。输入数据包括多行,每行给出一组测试数据,包括4个小于10个正整数。最后一组测试数据中包括4个0,表示输入的结束,这组数据不用处理。对于每一组测试数据,输出一行,如果可以得到24,输出“YES”;

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 7万+

ICLR 2022)ODConv:即插即用的动态卷积 (附代码)

一定程度上讲,ODConv可以视作CondConv的延续,将CondConv中一个维度上的动态特性进行了扩展,同时了考虑了空域、输入通道、输出通道等维度上的动态性,故称之为全维度动态卷积。ODConv是一种动态卷积算法,它的原理是在卷积过程中,根据输入数据的特征动态地调整卷积核的形状和大小,以适应不同的输入数据。具体来说,ODConv通过引入一个可学习的形变模块,根据输入数据的特征动态地调整卷积核的形状和大小,从而提高了卷积神经网络的性能。此外,相比常规卷积,动态卷积的卷积核参数往往是其n倍。

PLANTTHESON的博客 2万+

从误检率30%到99.7%:YOLOv8/v9工业零件缺陷检测实战(附产线部署全流程与参数调优秘籍)

工业场景YOLO实战:从实验室到车间的关键调优策略 本文针对工业缺陷检测的特殊性,系统总结了YOLOv8/v9在工业应用中的实战经验。通过齿轮厂缺陷检测案例,揭示了实验室模型与工业场景的三点本质差异:小目标特性(0.2-1mm缺陷)、复杂背景干扰(油污/反光)和数据量不足问题。重点提出了工业级解决方案:1)数据采集需覆盖极端工况(不同光照/污染/角度);2)标注采用LabelStudio+预标注提升效率;3)定制工业增强策略(反光模拟/缺陷复制粘贴)。文章还提供了完整的参数调优记录和TensorRT加速部署

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1734

Java递归实现算24

题目就是我们平时玩过的算24小游戏,输入四个数,判断是否能算出24; 若可以输出yes,若不行输出no 如:输入: 5 5 5 1         输出:Yes import java.util.Scanner; public class 算24 { public static boolean getResult(String line){ Strin

神经彬的博客 378

2、OTA/gm - C滤波器的架构与设计

本文深入探讨了OTA/gm-C滤波器的两种主要设计方法:基于LC梯形网络的设计与多环反馈(MLF)结构。前者包括元件替代法和信号模拟法,分别通过电感替代或电路方程模拟实现低敏感度滤波器;后者通过积分器级联与反馈网络合成全极点或含任意传输零点的传递函数。文中详细分析了不同结构如IFLF和LF的反馈矩阵、传递函数及性能差异,指出LF结构在敏感度、噪声和整体性能上的优势。同时比较了各类方法的优缺点及适用场景,为高频连续时间集成电路滤波器的设计提供了系统性指导。

fanta的博客 137

数据结构和算法设计专题之---24点游戏(穷举法和递归法)

一个简单的24点程序 下面本文将通过两个题目实例,分别给出用递归方法和循环方法的解决方案以及解题思路,便于读者更好地掌握两种方法。首先是一个简单的计算24点的问题(为了简化问题,我们假设只使用求和计算方法): 从1-9中任选四个数字(数字可以有重复),使四个数字的和刚好是24。 题目很简单,数字都是个位数,可以重复且之用加法,循环算法的核心就是使用...

weixin_30649859的博客 98

abapGit 安装与初始化完整指南:从 on-premise 到 SAP BTP ABAP environment 的一条龙实践

本文为ABAP开发者提供abapGit从安装到团队协作的完整指南。内容涵盖社区版ZABAPGIT的on-premise安装、Eclipse ADT插件配置、BTP环境使用及常见网络问题处理。重点包括:获取最新构建的安装步骤、EN语言环境的重要性、ADT插件安装方法、以及如何实现on-premise与BTP间的代码迁移。文中特别强调企业环境下代理设置、证书配置等注意事项,并提供实际操作案例,如将RAP业务对象迁移到BTP环境。文末附有可复用的实施清单,帮助开发者快速落地abapGit。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 415

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

递归形式的问题——算24

问题描述 算24 给出4个小于10个正整数,你可以使用加减乘除4中运算以及括号把这4个数连接起来得到一个表达式。现在的问题是,是否存在一种方式使得得到的表达式的结果等于24. 这里加减乘除以及括号的运算结果和运算的优先级跟我们平常的定义一致(这里的除法定义是实数除法)。 比如,对于5, 5, 5, 1,我们直达5 * ( 5 - 1 / 5 ) = 24,因此可以得到24.又比如,对...

Dainelcw 2993

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

算24

03 算24 描述 给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。现在的问题是,是否存在一种方式使得得到的表达式的结果等于24。 这里加减乘除以及括号的运算结果和运算的优先级跟我们平常的定义一致(这里的除法定义是实数除法)。 比如,对于5,5,5,1,我们知道5 * (5 – 1 / 5) = 24,因此可以得到24。又比如,对于1,1,4,2,我们...

weixin_44351043的博客 1635

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

递归——算24

递归——分解成子问题 问题 给出4个小于10个正整数,你可以使用加减乘除4种运算以及括 号把这4个数连接起来得到一个表达式。现在的问题是,是否存 在一种方式使得得到的表达式的结果等于24。 这里加减乘除以及括号的运算结果和运算的优先级跟我们平常 的定义一致(这里的除法定义是实数除法)。 比如,对于5,5,5,1,我们知道5 * (5 – 1 / 5) = 24,因此 可以得到24。又比如,对于1,...

Vinson的博客 1187

算24(递归)

题目: 1.给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。 2.现在的问题是,是否存在一种方式使得得到的表达式的结果等于24。 3.这里加减乘除以及括号的运算结果和运算的优先级跟我们平常的定义一致(这里的除法定义是实数除法)。 4.比如,对于5,5,5,1,我们知道5*(5-1/5)=24,因此可以得到24。又比如,对于1,1,4,2,我们怎么都不能...

zhengshuangyue的博客 1874

递归算24

有关于算24的问题 通过递归来实现 递归的思考步骤 第一步:分解成小规模的问题 第二步:找出边界的条件 #include<bits/stdc++.h> using namespace std; double a[5]; #define eps 1e-6 const int num=10; bool IsZero(double x) { //double浮点数除法要用精度判断 if(a...

weixin_41588754的博客 303
上一篇: 计算N的阶乘
下一篇: net-snmp配置开发及注意事项
flying2
博客等级 码龄25年 4粉丝 20原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值