我有一个递归函数,我称之为%macro program1(start,end,cond);
proc summary data = data1 nway missing;
where &start. < month < &end. ;
%if %length(&cond) %then %do;
where also &cond.;
%end;
class month_inc;
var var1 var2;
output out =summ_data1 sum=;
run;
%mend;
。如果满足特定条件,我再次调用该函数。如果没有,我想在变量%program1(start = '01Jan2013'd
,end = '01Jan2016'd
,cond = state = 'XXX')
中添加一个数字。
在我看来,它不应该是什么。有人可以看看这个:
acc
我试着尽可能地简化它。 a
是一个变量。 double acc(v)
{
double a = 0;
for(int q=0; q<v; q++)
{
if(bf(q) < 1)
{
if(ef() == 0)
{
a += cf();
}
else
{
a += df();
}
}
else
{
return a += acc(v);
}
}
return a;
}
,v
,bf()
和cf()
是返回整数值的函数。现在我希望每次在整个递归过程中满足特定条件时ef()
递增。我的代码是我想要的吗?我现在还没有看到它。
答案 0 :(得分:1)
你的问题是在递归函数中定义了a。如果要计算递归内的事件,请在acc()之外声明。