该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
// triangle.cpp : 定义控制台应用程序的入口点。
//
/************************************
*题目: 杨辉三角打印到(同时打印到控制台和文件中)
*实现方法:递归方法实现
*编译环境:vs2008
************************************/
#include "stdafx.h"
#include
/************************************
*此函数为递归方法打印杨辉三角。row和col
分别表示行和列。杨辉三角的格式为
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
由图可知,第一行的值为1,第i行,第i列的值也为1,
所以得出if(row == 1 || row == col) return 1;
从第二行开始,第m行n列的值是m-1行n-1列的值加上
m-1行n列的值,如果n为1时,那么第0行是不存在的,所以
我虚拟了第0列,并且将该列的所有值置为0,于是得出
if(col == 0) return 0;
return fun(row-1,col-1)+fun(row-1,col);
两个式子。
************************************/
int fun(int row,int col)
{
if(col == 0) return 0;
if(row == 1 || row == col) return 1;
return fun(row-1,col-1)+fun(row-1,col);
}
void main()
{
FILE *fp;
int n; /*杨辉三角的阶数*/
int i,j;/*表示行和列*/
if( (fp = fopen("e:\\triangle.txt","w+")) == NULL ){
printf("打开文件失败!");
return;
}
printf("请输入要打印的杨辉三角的阶数:");
scanf("%d",&n);
for(i=1;i<=n;i++){
for(j=1;j<=i;j++){
printf("%5d",fun(i,j));
fprintf(fp,"%5d",fun(i,j));
}
printf("\n");
fprintf(fp,"\n");
}
fclose(fp);
getchar();
getchar();
}