首页编程递归函数例子(c语言中,什么是函数的递归,能举个例子么)

递归函数例子(c语言中,什么是函数的递归,能举个例子么)

编程之家2023-11-0787次浏览

本篇文章给大家谈谈递归函数例子,以及c语言中,什么是函数的递归,能举个例子么对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

递归函数例子(c语言中,什么是函数的递归,能举个例子么)

请高手写一个通达信的递归函数的例子

通达信没有递归功能,只能自己做。

我自己做的一个缠论副图公式,尚未完成,但基本功能包括K线包含,底分型,顶分型,都有了。你参考下。

{每一天需要有几个参数:1、最高价,最低价,是否被前K线包含,所属走势类似(1=上升,2=下跌,3=顶分型,4=底分型,走势和分型都是最后一个K线确定,

在顶底未定之前都是走势)}

MA5:=MA(C,5);MA10:=MA(C,10);

ZB:CURRBARSCOUNT,NODRAW;{为每根K线建立坐标}

递归函数例子(c语言中,什么是函数的递归,能举个例子么)

L1:= ZB>1 AND H<=REF(H,1) AND L>=REF(L,1),NODRAW;{1=当天是左包含关系}L2:= ZB>2 AND REF(L1,1) AND H<=REF(H,2) AND L>=REF(L,2),NODRAW;{1=连续2天是左包含关系}

L3:= ZB>3 AND REF(L2,1) AND H<=REF(H,3) AND L>=REF(L,3),NODRAW;{1=连续3天是左包含关系}L4:= ZB>4 AND REF(L3,1) AND H<=REF(H,4) AND L>=REF(L,4),NODRAW;{1=连续4天是左包含关系}

L5:= ZB>5 AND REF(L4,1) AND H<=REF(H,5) AND L>=REF(L,5),NODRAW;{1=连续5天是左包含关系}L6:= ZB>6 AND REF(L5,1) AND H<=REF(H,6) AND L>=REF(L,6),NODRAW;{1=连续6天是左包含关系}

L7:= ZB>7 AND REF(L6,1) AND H<=REF(H,7) AND L>=REF(L,7),NODRAW;{1=连续7天是左包含关系}L8:= ZB>8 AND REF(L7,1) AND H<=REF(H,8) AND L>=REF(L,8),NODRAW;{1=连续8天是左包含关系}

L9:= ZB>9 AND REF(L8,1) AND H<=REF(H,9) AND L>=REF(L,9),NODRAW;{1=连续9天是左包含关系}L10:= ZB>10 AND REF(L9,1) AND H<=REF(H,10) AND L>=REF(L,10),NODRAW;{1=连续10天是左包含关系}

LIN: IF(L1 OR L2 OR L3 OR L4 OR L5 OR L6 OR L7 OR L8 OR L9 OR L10,1,0),NODRAW;{左包含}

递归函数例子(c语言中,什么是函数的递归,能举个例子么)

LH: IF(L10,REF(H,10),IF(L9,REF(H,9),IF(L8,REF(H,8),IF(L7,REF(H,7),IF(L6,REF(H,6),IF(L5,REF(H,5),IF(L4,REF(H,4),IF(L3,REF(H,3),IF(L2,REF(H,2),IF(L1,REF(H,1),H)))))))))),NODRAW;

LL: IF(L10,REF(L,10),IF(L9,REF(L,9),IF(L8,REF(L,8),IF(L7,REF(L,7),IF(L6,REF(L,6),IF(L5,REF(L,5),IF(L4,REF(L,4),IF(L3,REF(L,3),IF(L2,REF(L,2),IF(L1,REF(L,1),L)))))))))),NODRAW;

R1:= IF(ISLASTBAR,0,ZB>1 AND H<=REFX(H,1) AND L>=REFX(L,1)),NODRAW;{1=当天是右包含关系}R2:= IF(ISLASTBAR,0,ZB>2 AND REF(R1,1) AND H<=REFX(H,1) AND L>=REFX(L,1)),NODRAW;{1=连续2天是右包含关系}

R3:= IF(ISLASTBAR,0,ZB>3 AND REF(R2,1) AND H<=REFX(H,1) AND L>=REFX(L,1)),NODRAW;{1=连续3天是右包含关系}R4:= IF(ISLASTBAR,0,ZB>4 AND REF(R3,1) AND H<=REFX(H,1) AND L>=REFX(L,1)),NODRAW;{1=连续4天是右包含关系}

R5:= IF(ISLASTBAR,0,ZB>5 AND REF(R4,1) AND H<=REFX(H,1) AND L>=REFX(L,1)),NODRAW;{1=连续5天是右包含关系}R6:= IF(ISLASTBAR,0,ZB>6 AND REF(R5,1) AND H<=REFX(H,1) AND L>=REFX(L,1)),NODRAW;{1=连续6天是右包含关系}

R7:= IF(ISLASTBAR,0,ZB>7 AND REF(R6,1) AND H<=REFX(H,1) AND L>=REFX(L,1)),NODRAW;{1=连续7天是右包含关系}R8:= IF(ISLASTBAR,0,ZB>8 AND REF(R7,1) AND H<=REFX(H,1) AND L>=REFX(L,1)),NODRAW;{1=连续8天是右包含关系}

R9:= IF(ISLASTBAR,0,ZB>9 AND REF(R8,1) AND H<=REFX(H,1) AND L>=REFX(L,1)),NODRAW;{1=连续9天是右包含关系}R10:=IF(ISLASTBAR,0,ZB>10 AND REF(R9,1) AND H<=REFX(H,1) AND L>=REFX(L,1)),NODRAW;{1=连续10天是右包含关系}

RIN: IF(R1 OR R2 OR R3 OR R4 OR R5 OR R6 OR R7 OR R8 OR R9 OR R10,1,0),NODRAW;{右包含}LD:= CONST(DAYTODATE((DATETODAY(DATE)-FINANCE(42))))+19000000,NODRAW;{上市年月日}

RH:= IF(R10,REFX(H,10),IF(R9,REFX(H,9),IF(R8,REFX(H,8),IF(R7,REFX(H,7),IF(R6,REFX(H,6),IF(R5,REFX(H,5),IF(R4,REFX(H,4),IF(R3,REFX(H,3),IF(R2,REFX(H,2),IF(R1,REFX(H,1),H)))))))))),NODRAW;

RL:= IF(R10,REFX(L,10),IF(R9,REFX(L,9),IF(R8,REFX(L,8),IF(R7,REFX(L,7),IF(R6,REFX(L,6),IF(R5,REFX(L,5),IF(R4,REFX(L,4),IF(R3,REFX(L,3),IF(R2,REFX(L,2),IF(R1,REFX(L,1),L)))))))))),NODRAW;

CK: NOT(LIN OR RIN),NODRAW;{当前K线是有效的缠论K线}CK0:=LIN OR RIN,NODRAW;

CKA1:= IF(ISLASTBAR,0,IF(REFX(CK,1),1,IF(REFX(CK,2),2,IF(REFX(CK,3),3,IF(REFX(CK,4),4,IF(REFX(CK,5),5,IF(REFX(CK,6),6,IF(REFX(CK,7),7,IF(REFX(CK,8),8,IF(REFX(CK,9),9,IF(REFX(CK,10),10,0))))))))))),NODRAW;

{后续第一根有效缠论K线到当前K线周期数} CKA2:= IF(ISLASTBAR,0,CKA1+REFX(CKA1,CKA1)),NODRAW;{后续第二根缠论K线到当前周期数}

V1: REF(CK,1),NODRAW;V2:= REF(CK0,1) AND REF(CK,2),NODRAW;V3:= REF(CK0,1) AND REF(CK0,2) AND REF(CK,3),NODRAW;V4:= REF(CK0,1) AND REF(CK0,2) AND REF(CK0,3) AND REF(CK,4),NODRAW;

V5:= REF(CK0,1) AND REF(CK0,2) AND REF(CK0,3) AND REF(CK0,4) AND REF(CK,5),NODRAW;V6:= REF(CK0,1) AND REF(CK0,2) AND REF(CK0,3) AND REF(CK0,4) AND REF(CK0,5) AND REF(CK,6),NODRAW;

V7:= REF(CK0,1) AND REF(CK0,2) AND REF(CK0,3) AND REF(CK0,4) AND REF(CK0,5) AND REF(CK0,6) AND REF(CK,7),NODRAW;V8:= REF(CK0,1) AND REF(CK0,2) AND REF(CK0,3) AND REF(CK0,4) AND REF(CK0,5) AND REF(CK0,6) AND REF(CK0,7) AND REF(CK,8),NODRAW;

V9:= REF(CK0,1) AND REF(CK0,2) AND REF(CK0,3) AND REF(CK0,4) AND REF(CK0,5) AND REF(CK0,6) AND REF(CK0,7) AND REF(CK0,8) AND REF(CK,9),NODRAW;

V10:=REF(CK0,1) AND REF(CK0,2) AND REF(CK0,3) AND REF(CK0,4) AND REF(CK0,5) AND REF(CK0,6) AND REF(CK0,7) AND REF(CK0,8) AND REF(CK0,9) AND REF(CK,10),NODRAW;

CKB1: IF(CK AND V1,1,IF(CK AND V2,2,IF(CK AND V3,3,IF(CK AND V4,4,IF(CK AND V5,5,IF(CK AND V6,6,IF(CK AND V7,7,IF(CK AND V8,8,IF(CK AND V9,9,IF(CK AND V10,10,0)))))))))),NODRAW;

{前面一根有效缠论K线到当前K线周期数} CKB2:= CKB1+REF(CKB1,CKB1),NODRAW;{前面第二根缠论K线到当前的周期数}

UPXBGN:= IF(ISLASTBAR,0,IF(CK AND LH<REFX(LH,CKA1) AND REFX(LH,CKA1)> REFX(LH,CKA2),1,0)),NODRAW;

UPXMID:= IF(CK AND REF(UPXBGN,CKB1) AND LH>REF(LH,CKB1) AND LH>REFX(LH,CKA1),1,0),NODRAW;

UPXEND:= IF(CK AND REF(UPXBGN,CKB2) AND REF(UPXMID,CKB1) AND LH<REF(LH,CKB1) AND REF(LH,CKB1)> REF(LH,CKB2),1,0),NODRAW;

DWXBGN: IF(ISLASTBAR,0,IF(CK=1 AND LL>REFX(LL,CKA1) AND REFX(LL,CKA1)< REFX(LL,CKA2),1,0)),NODRAW;

DWXMID: IF(CK AND REF(DWXBGN,CKB1) AND REF(LL,CKB1)>LL AND LL< REFX(LL,CKA1),1,0),NODRAW;

DWXEND:= IF(CK AND REF(DWXMID,CKB1) AND REF(DWXBGN,CKB2) AND REF(LL,CKB2)> REF(LL,CKB1) AND REF(LL,CKB1)< LL,1,0),NODRAW;

UPX0:= BARSSINCE(UPXMID),NODRAW;DWX0:= BARSSINCE(DWXMID),NODRAW;

X0: IF(UPX0>DWX0,1,0),NODRAW;{X0表示该股第一次分型的类型,1表示顶分型,0表示底分型};

SZXBGN:= IF(CK AND ISLASTBAR AND H<=REF(H,1),0,IF(CK AND LH>REF(LH,CKB1),1,0)),NODRAW;

LASTUPX: REF(BARSLAST(UPXMID),1),NODRAW;

LASTDWX: REF(BARSLAST(DWXMID),1),NODRAW;

NEWUPX: UPXMID,NODRAW;

NEWDWX: DWXMID,NODRAW;

UPX: REF(NEWUPX,CKB1) AND UPXMID,NODRAW;DWX: REF(NEWDWX,CKB1) AND DWXMID,NODRAW;

STICKLINE(LIN OR RIN,H,L,0.8,1),COLORGRAY;

{STICKLINE(NOT(LIN OR RIN) AND C>O,H,L,0.8,2),COLORRED;

STICKLINE(NOT(LIN OR RIN) AND C<O,H,L,0.8,2),COLORCYAN;

STICKLINE(NOT(LIN OR RIN) AND C=O,H,L,0.8,2),COLORWHITE;

}

STICKLINE(NOT(LIN OR RIN),H,L,0.8,2),COLORWHITE;

STICKLINE(UPXMID,LH,LL,1,0),COLORRED;

STICKLINE(DWXMID,LH,LL,1,0),COLORCYAN;

DRAWLINE(NEWUPX,LH,DWXMID,LL,0),COLORGREEN,LINETHICK1;

DRAWLINE(NEWDWX,LL,UPXMID,LH,0),COLORGREEN,LINETHICK1;

c语言中,什么是函数的递归,能举个例子么

所谓递归,说的简单点,就是函数自己调用自己,然后在某个特定条件下。结束这种自我调用。

如果不给予这个结束条件,就成了无限死循环了。这样这个递归也就毫无意义了。

如下面问题

1 1 2 3 5 8 13 21........n

分析可以看出, i表示第几个数, n表示该数的值

当i= 1时, n= 1;

当i= 2时, n= 1;

当i= 3时 n= i1+ i2;

当i= 4时 n= i2+ i3

所以可以写个函数

int fun(int n)//这里的n代表第几个数

{

if(1== n|| 2== n)//第一个数

{

return 1;

}

else

{

return fun(n- 1)+ fun(n- 2);//这里就是自己调用自己,形成循环自我调用。

}

}

注:以上代码只是用来演示递归,不包含错误校验。

在实际生产过程中。该代码不够健壮。

如此,就完成了递归。你就可以求得第n个数了。

何时考虑使用递归。

当你分析一个问题的时候,发现这个问题,是一个自我循环时,而且这个自我循环到一个给定值,就可以终止的时候,你就快要考虑递归了。

什么是递归函数 怎样实现递归

递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。递归函数必须有结束条件。

当函数在一直递推,直到遇到墙后返回,这个墙就是结束条件。

所以递归要有两个要素,结束条件与递推关系。

递归有两个基本要素:

(1)边界条件:确定递归到何时终止,也称为递归出口。

(2)递归模式:大问题是如何分解为小问题的,也称为递归体。递归函数只有具备了这两个要素,才能在有限次计算后得出结果

在递归函数中,调用函数和被调用函数是同一个函数,需要注意的是递归函数的调用层次,如果把调用递归函数的主函数称为第0层,进入函数后,首次递归调用自身称为第1层调用;从第i层递归调用自身称为第i+1层。反之,退出第i+1层调用应该返回第i层。

一个递归函数的调用过程类似于多个函数的嵌套的调用,只不过调用函数和被调用函数是同一个函数。为了保证递归函数的正确执行,系统需设立一个工作栈。具体地说,递归调用的内部执行过程如下:

(1)运动开始时,首先为递归调用建立一个工作栈,其结构包括值参、局部变量和返回地址;

(2)每次执行递归调用之前,把递归函数的值参和局部变量的当前值以及调用后的返回地址压栈;

(3)每次递归调用结束后,将栈顶元

扩展资料:

递归就是某个函数直接或间接地调用了自身,这种调用方式叫做递归调用。说白了,还是函数调用。既然是函数调用,那么就有一个雷打不动的原则:所有被调用的函数都将创建一个副本,各自为调用者服务,而不受其他函数的影响。

你的ff函数,递归多少次,就有多少个副本,再利用内存的栈式管理,反向退出。这个最好找一下“栈”这方面的东西看看,挺容易的,就像子弹匣一样,先进后出。

从某种意义上说,这是不对的,因为就像刚才说的,一旦被调用,他将在内存中复制出一份代码,再被调用就再复制一份,换句话说,你可以吧同一个函数的多次调用理解称谓多个不同函数的一次调用,这样也会会简单些。

再说=1和=0是为什么退出。递归,很需要注意的就是死递归,也就是说,某一个函数进入了无限调用自身的情况,永无止境地消耗内存等资源,这在编程方面是一大忌。

但凡是递归的函数,一定会在某一个地方存在能够返回上一层函数的代码,否则必定死递归。ff函数中,那个else就是返回的出口,你可以这样想,如果没有那个if来进行判断,你递归到什么时候算完?ff是不是会一直调用自己。

因为一旦某个函数A中调用了函数B(或者自己),那么A中的代码会停在调用的位置,而转向B中去执行,同理,如果B又调用函数C,那么B又停在调用的位置,去执行C,如果无限调用,那么程序是永远不会结束的。

当然,也有这种情况,A调用B,然后继续自己的代码,不管B的死活,这种不在我们的讨论范围内,因为那牵扯到另一种编程方式:多线程。

参考资料:百度百科——递归函数

OK,关于递归函数例子和c语言中,什么是函数的递归,能举个例子么的内容到此结束了,希望对大家有所帮助。

深入浅出设计模式(深入浅出设计模式的书籍目录)idc公司(idc是什么公司)