Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在递归中只使用最后的值?

如何在递归中只使用最后的值?
EN

Stack Overflow用户
提问于 2019-06-21 09:15:15
回答 1查看 157关注 0票数 1

我正在开发一个程序,将z3表达式转换为qdimcas格式。下面的代码将qdimacs格式的代码打印到一个文件中。

在这里,每次调用函数时都会修改变量clause_count。有没有一种方法可以只使用或只打印clause_count的最终值?

代码语言:javascript
运行
AI代码解释
复制
#include<iostream>
#include "z3++.h"
#include<string>
#include<fstream>
using namespace z3;
using namespace std;



int dimacs(int t, string oprt, int arg_num,int element[],int variables)
{   int static clause_count = 0;
    int static check =0;
     std::cout<<"Value of T is: "<<t<<" operator is: "<<oprt<<" Nuumber of arguments: "<<arg_num<<endl;

     if(arg_num==2)
        std::cout<<element[0]<<" "<<element[1]<<endl;
     else
        std::cout<<element[0]<<endl;        

     ofstream myfile;
     myfile.open("contents.txt",ios::app);
     myfile.clear();

     if(check == 0)
       { 
         myfile<<"p cnf \n";
         check++;
       }
     if(arg_num == 2)
    {   clause_count+=3;
        if(oprt.compare("and")==0)
        {
            myfile<<"-"<<t<<" "<<element[0]<<" 0 \n";
            myfile<<"-"<<t<<" "<<element[1]<<" 0 \n";
            myfile<<"-"<<element[0]<<" -"<<element[1]<<" "<<t<<" 0 \n";
            myfile.close();
            std::cout<<"printing done for AND.\n";
        }
        else if(oprt.compare("or")==0)
        {
            myfile<<t<<" -"<<element[0]<<" 0 \n";
            myfile<<t<<" -"<<element[1]<<" 0 \n";
            myfile<<"-"<<t<<" "<<element[0]<<" "<<element[1]<<" 0 \n";
            myfile.close();
            std::cout<<"printing done for OR.\n";
        }
        else if(oprt.compare("=>")==0)
        {
            myfile<<"-"<<t<<" -"<<element[0]<<" 0 \n";
            myfile<<"-"<<t<<" "<<element[1]<<" 0\n";
            myfile<<"-"<<element[1]<<" -"<<t<<" "<<element[0]<<" 0 \n";
            myfile.close();
            std::cout<<"printing done for implies.\n";
         }

    }  
    else if(arg_num == 1)
    {   clause_count+=2;
        if(oprt.compare("not")==0)
        {
            myfile<<"-"<<t<<" -"<<element[0]<<" 0\n";
            myfile<<t<<" "<<element[0]<<" 0 \n";
            myfile.close();
            std::cout<<"printing done for NOT.\n";
        }
    }  
    std::cout<<clause_count<<endl;
    std::cout<<variables<<endl;
}

我基本上只需要存储clause_count的最终值并将其传递给另一个函数。

实际上有另一个文件调用此函数,该文件运行递归。通过递归调用,这个dimacs函数被调用,并通过它传递参数。最后,无论何时调用此函数,dimacs文件都会打印输出,输出应如下所示:

代码语言:javascript
运行
AI代码解释
复制
p cnf 3 4
1 2 0
2 1 0 
2 4 0
4 5 0

这里有行"p cnf“有两个值,即。3和4,其中4必须存储在我的程序的变量clause_count中。但是由于递归的原因,我打印了clause_count的每个值。我只需要最终的值。

EN

回答 1

Stack Overflow用户

发布于 2019-06-21 09:47:13

由于您使用的是静态变量(基本上是全局变量,仅在dimacs中可见),我建议将静态clause_count声明移到函数外部的全局变量声明中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56700370

复制
相关文章
如何使用github给大佬递茶
最近也是闲到没事干(误),开始给开源项目打小黑工贡献代码,当个dalao手底下的端茶党。但是看来端茶党也不是那么容易做的或许只是傻翠他智商太低跟不上,在打小黑工的时候遇到了各种各样的麻烦,下面大概记录一下,不知道以后有没有人能用得上。
idealclover
2018/10/31
8710
理解逻辑回归中的ROC曲线和KS值「建议收藏」
从名字来理解逻辑回归.在逻辑回归中,逻辑一词是logistics [lə’dʒɪstɪks]的音译字,并不是因为这个算法是突出逻辑的特性.
全栈程序员站长
2022/08/29
2.8K0
理解逻辑回归中的ROC曲线和KS值「建议收藏」
中国最后600只河狸,有AI守护
明敏 发自 凹非寺 量子位 | 公众号 QbitAI 中国新疆,有一群特殊的“水利工程师”。 它们圆圆滚滚只吃素,热爱建堤坝,呆萌可爱。曾因“认真搓澡”视频外传登上热搜。 嗯,这就是“大胖耗子”——河狸。 它们最为人熟知的习性是修水坝,号称“动物界工程师”。 这主要是为了给自己建立保护地,河狸的胆子非常小、几乎没有自卫能力,遇到危险后往往只能一个猛子扎到水里躲藏。 另一方面,河狸修筑水坝后形成的池塘,能够自然发展成为一个物种丰富的生态环境,如麝鼠、鱼、水鸟、狐狸等生物都能够围绕这个池塘安家生存繁衍后代。
量子位
2023/02/23
3620
中国最后600只河狸,有AI守护
假如暑假只剩最后3分钟…
正所谓一场秋雨一场寒 最近的大雨一场接一场 小编的宿舍潮得都要长蘑菇了 图片来源:pixabay 气温也随之…退!退!退! 不仅如此 麻麻的眼神也不再慈爱 躺平的心态也逐渐有了一丝裂缝 种种迹象都说明了—— 朋友们,我们的暑假余额不足了! 是时候好好想想 怎么度过最后一丁点假期时光了! 最后一周,可以享受一场短期旅行 最后三天,可以与好友们相聚叙旧 最后一天,可以抓紧时间陪伴家人 那… 如果只剩最后3分钟 你要怎么度过? 再见了暑假,今晚我就要在梦里远航 要想把最后3分钟的假期度过的精彩纷呈,还有什么
量子位
2022/08/29
2060
假如暑假只剩最后3分钟…
Python递归中使用协程yield
作者:matrix 被围观: 2,068 次 发布时间:2019-06-11 分类:Python | 无评论 »
HHTjim 部落格
2022/09/26
4140
多次点击只让最后一次操作生效
除去一些常用方法,以下也能实现 [[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(todoSomething) object:nil]; [self performSelector:@selector(todoSomething) withObject:nil afterDelay:0.3f];
清墨
2018/10/11
8360
Vue如何在父级下使用v-slot的值
https://cn.vuejs.org/v2/guide/components-slots.html#%E4%BD%9C%E7%94%A8%E5%9F%9F%E6%8F%92%E6%A7%BD
javascript.shop
2019/11/26
1.6K0
Mysql实现null值排在最前或最后
最近在做项目迁移,Oracle版本的迁到Mysql版本,遇到有些oracle的函数,mysql并没有,所以就只好想自定义函数或者找到替换函数的方法进行改造。
SmileNicky
2019/03/04
1.5K0
iOS_只执行一次、timer内重复点击,只执行最后一次
[NSObject cancelPreviousPerformRequestsWithTarget:self];
mikimo
2022/07/20
1.4K0
如何在生存分析与Cox回归中计算IDI,NRI指标
原文链接:http://tecdat.cn/?p=6095 读取样本数据 D=D\[!is.na(apply(D,1,mean)),\] ; dim(D) ## \[1\] 416 7 查询部分
拓端
2022/03/05
6840
如何在生存分析与Cox回归中计算IDI,NRI指标
HR:大专学历?抱歉,你只值200
“   PREFACE   前言 学历歧视行行都在,不止大专,专升本的本科都一样会被歧视,全日制本科对于部分用人单位基本是一个标准的存在,更何况现在研究生一年比一年多,企业用人也有更多选择。 但是按理说,技术岗位这种风气应该还稍弱一点。不曾想到,昨天Boss直聘上Web前端岗位一段HR和求职人员的对话却 因为它的离谱程度之高而冲上了热搜。 01 前因后果 6月29日,有博主发布了网友在BOSS直聘上与公司名显示为“启出科技”的招聘企业HR张某某的聊天记录。 好家伙,这“打工人联盟”能忍?于是这张图被爆出来之
老九君
2022/07/01
2660
HR:大专学历?抱歉,你只值200
【linux】信号的保存和递达处理
        上节我们了解到了预备(信号是什么,信号的基础知识)再到信号的产生(四种方式)。今天我们了解信号的保存。信号产生,进程不一定立马就去处理,而是等合适的时间去处理,那么在这段时间内,进程就需要保存信号,到了合适时间再去执行!
The sky
2023/10/17
1900
【linux】信号的保存和递达处理
逻辑回归中的多分类问题
1)OvR (One vs Rest) 每次将某个与剩下的所有的分类,n个类别进行n次分类,选择分类得分最高的。
生信编程日常
2020/11/12
6360
链表问题,如何优雅递龟?
大家好,我是来自华为的「程序员小熊」。相信绝大部分童鞋都知道,在处理与「链表」相关问题时,常用的解题套路主要包括「双指针」、「迭代」和「虚拟头节点」等等。
9号同学
2021/07/07
2770
链表问题,如何优雅递龟?
总要到最后关头才肯重构代码,强如spark也不例外
用过Python做过机器学习的同学对Python当中pandas当中的DataFrame应该不陌生,如果没做过也没有关系,我们简单来介绍一下。DataFrame翻译过来的意思是数据帧,但其实它指的是一种特殊的数据结构,使得数据以类似关系型数据库当中的表一样存储。使用DataFrame我们可以非常方便地对整张表进行一些类似SQL的一些复杂的处理。Apache Spark在升级到了1.3版本之后,也提供了类似功能的DataFrame,也就是大名鼎鼎的SparkSQL。
TechFlow-承志
2020/05/14
1.2K0
R语言使用 LOWESS技术图分析逻辑回归中的函数形式
当我们在回归模型中包含连续变量作为协变量时,重要的是我们使用正确的(或近似正确的)函数形式。例如,对于连续结果Y和连续协变量X,可能是Y的期望值是X和X ^ 2的线性函数,而不是X的线性函数。一种简单但通常有效的方法是简单地查看Y对X的散点图,以直观地评估。
拓端
2020/07/17
2.4K0
R语言使用 LOWESS技术图分析逻辑回归中的函数形式
JavaScript递归中的作用域问题
需求是这样的,从子节点寻找指定className的父节点,一开始就想到递归(笨!),Dom结构如下: <div class="layer_1"> <div class="layer_2"> <div class="layer_3"> <div id="layer_4"></div> </div> </div> </div> 先通过id获得layer_4的div,然后逐层向上寻找最外层的layer_1,一开始我试图用如下递归获取: 1
寒月十八
2018/01/30
1.1K0
改别人Bug 系列《递归中使用Return 问题》
语言: JS 框架: React 开发编辑器: VSCode 问题提出者:同事小G
星宇大前端
2022/05/06
2740
R语言如何在生存分析与Cox回归中计算IDI,NRI指标
原文链接:http://tecdat.cn/?p=6095 读取样本数据 D=D[!is.na(apply(D,1,mean)),] ; dim(D) ## [1] 416 7 查询部分数据(结果
拓端
2020/07/16
2.3K0
点击加载更多

相似问题

PostgreSQL只从每个递归中选择最后一行

10

PyQt -只产生最后的值

21

使用Stata只包含面板回归中的完整组

12

循环只插入最后的值。

57

数组只打印最后值

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文