这段代码的执行过程
创新互联公司主要从事成都做网站、网站制作、成都外贸网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务丰泽,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
主函数main调用fun5(4)
进入fun5(4) n==4,s=4+fun5(3)
进入fun5(3) n==3,s=3+fun5(2)
进入fun5(2) n==2,s==2,打印2,2--------s
返回 fun5(3) n==3,s=3+fun5(2)=3+2=5,打印3,5--------s
返回 fun5(4) n==4,s=4+fun5(3)=4+5=9,打印4,9--------s
返回main函数,打印9
完整的C语言程序如下
#include stdio.h
long fun5(int n){
long s;
if((n==1)||(n==2))
s=2;
else
s=n+fun5(n-1);
printf("%d\n",n);
printf("%d--------s\n",s);
return(s);
}
main(){
long x;
x=fun5(4);
printf("%ld",x);
}
int search(int *array, int length, int target)
{
int count = 0;
if (array[length-1] == target) count =1;
if (length -1 0) count += search(array, length-1, target);
return count;
}
需要有一个画直线的库函数供使用。以下讲思路。
定义点的类型为具有二维坐标,比如 struct point { double x; double y;} 之类。
定义多边形的类型为元素是点的线性表,比如链表 struct polygon { struct point *p; struct polygon* next; },
需要能按顺序访问各个点,并需要提供insert函数以做插入点操作。
从等边三角形开始,多边形包含起始的三个点,三个点构成等边三角形。
下面的思路是伪代码
p = 起始点head;
do {
1.每个点p与下一个点p-next构成多边形的一条边,求边长;
2.求出两个三等分点q1和q2(求两点构成的线段的距离并进一步求三等分点的方法写成函数,公式不用说了吧);
3.按顺序将q1和q2插入p和p-next之间;
4.以q1和q2为顶点求向外生长出的三角形的第三个顶点r(求r的坐标比较复杂一些,可以用公式,但我认为按q1q2与x轴的夹角分6种情况可以简化计算);
5.将r插入q1和q2之间;
6.p = p-next;
} while (p != 起始点head);
// 每完整循环一次增长一轮,考虑一下要循环几轮满足需要,从图看第二个图是循环3轮。
下面p依次遍历多边形每个点画线 drawline(p, p-next)
最后一个点与起始点head之间drawline(p, head)闭合图形。
完毕。
函数执行流程:
开始:
fact(5) 函数结束
|
return 5 * fact(4) return 5 * 4* 2 *1
| |
return 4 * fact(3) return 4* 3* 2*1
| |
return 3 * fact(2) return 3* 2*1
| |
return 2 * fact(1) return 2* 1
| |
return 1 函数返回