c语言用递归函数输出图形 c语言实现递归

c语言用递归画图案?用C语言,实现这个很简单:
① , 主函数main()调用一个自定义的函数:
drawstar(n);
n,事先赋值5 。循环从5到1 。
②drawstar(n)
如果n大于零 , 打印一个星号* 。引入参数n-1,递归调用自己 。
如果n=0,打印一个回车,并返回 。
应该就可以了 。
这个题目看来是训练递归调用,如果自由编程的话,用普通循环更简单 。
C语言 按照函数原型语句“void p(int n);”编写一个递归函数显示出如下图形,此图形是n=5的情况 。#include stdio.h
void p(int n)
{int i,j;
for(i=1;i=n;i++)
{for(j=0;ji;j++)
printf("%d",i);
printf("\n");
}
}
int main()
{int n;
scanf("%d",n);
p(n);
return 0;
}
用C语言如何用递归方法画出下图图形 只需提供思路不用具体代码 急!谢谢需要有一个画直线的库函数供使用 。以下讲思路 。
定义点的类型为具有二维坐标,比如 struct point { double x; double y;} 之类 。
定义多边形的类型为元素是点的线性表,比如链表 struct polygon { struct point *p; struct polygon* next; },
需要能按顺序访问各个点,并需要提供insert函数以做插入点操作 。
从等边三角形开始,多边形包含起始的三个点,三个点构成等边三角形 。
【c语言用递归函数输出图形 c语言实现递归】下面的思路是伪代码
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)闭合图形 。
完毕 。
C语言递归函数#include stdio.h
void func(int m,int n)
{
if(m)
{
if(n)
{
func(m,n-1);
printf("%d",m);
}
else
{
func(m-1,m-1);
if(m1)
{
printf("\n");
}
}
}
}
int main(void)
{
func(5,5);
return 0;
}
怎么用递归函数实现这张图(用C语言编写)?顺便教一下运用递归算法的技巧 。?#include iostream
#include algorithm
#include string
#include cstdlib
#include set
#include cmath
#include cstdio
#include cstring
#include vector
#include map
#include stack
#include queue
#include cctype
#define LL long long
using namespace std;
const LL inf = 1e18;
const LL mod = 1e9+7;
int s[10] = {1, 3, 6, 10, 15, 21, 27};
int m;
void f(int n, int k, int cnt) {
if(n == 1) {
return;
}
else if(cnt == 0) {
cnt = m - k - 1;
k = m;
f(cnt + 1, k, cnt);
printf("%d\n", cnt + 1);
}else {
f(n + k, k - 1, cnt - 1);
printf("%d ", n + k);
}
}
int main() {
//1 3 6 10 15 21 27
//1 2 3 4567
//s = (1 + n) * n / 2
int n;
while(scanf("%d", n) != EOF) {
int k = lower_bound(s, s + 7, n) - s;
m = k;
f(k + 1, k, k);
printf("%d\n", k + 1);

推荐阅读