一些经典的数据结构的程序,想到了就写一下
1.斐波拉契数列
递归写的,比较简单
#include <stdio.h>
#include <math.h>
int fibonacci(int n)
{
int f1 = 1, f2 = 1;
int fn;
if (n <= 2)
return 1;
else
return fibonacci(n - 1) + fibonacci(n - 2);
}
void main()
{
int n;
printf("请输入数列项数(大于0且为整数):");
scanf_s("%d", &n);
printf("第%d项数据为:%d",n,fibonacci(n));
printf("\n数列为:");
for (int i = 1; i <= n; i++)
printf("%d ", fibonacci(i));
system("pause");
}
2.杨辉三角形
原理:每个数字等于上一行的左右两个数字之和。即第n行的第i个数等于第n-1行的第i-1和第i项之和
#include <stdio.h>
#include <math.h>
#define size 10 //杨辉三角的大小
void triangle()
{
int n;
printf("请输入杨辉三角形的行数:");
scanf_s("%d", &n);
int num[size][size];
int i, j;
for (i = 0; i<n;i++)
{
num[i][0] = 1;
num[i][i] = 1; //端点数为1
for (j = 1; j < i; j++)
num[i][j] = num[i - 1][j - 1] + num[i - 1][j];
}
//打印输出
for (i = 0; i < n; i++)
{
for (j = 0; j < n -i; j++)
printf(" ");
for (j = 0; j <= i; j++)
printf("%-3d", num[i][j]);
printf("\n");
}
}
void main()
{
triangle();
system("pause");
}