/* ----------------递归一:求100之内的和----------------------------- */
#include "stdio.h"
int sum(int i)
{
if(i==1)
{
return 1;
}
return i+sum(i-1);
}
void main()
{
//用递归求100以内的和
int a= sum(100);
printf("%d",a);
}
/* ----------------递归二:求一个数的阶层----------------------------- */
#include "stdio.h"
void main()
{
int result=jiecheng(a);
printf("结果:%d",result);
}
int jiecheng(int n)
{
if(n==1)
return 1;
return n*jiecheng(n-1);
}
/* ----------------递归三:java IO递归一个文件夹的子文件-----------------------------
*/
public static void main(String [] args){
File file=new File("D:\\mybox");
findfolder(file);
}
public static void findfolder(File f){
if( f.isDirectory){ //判断是否文件夹
File files=f.listFiles();
for(int i=0;i<files.length;i++){
if(files[i]!=null)
findfolder(files[i]);
else
System.out.println(files[i]);
}
}else{
System.out.println(f); //直接打印此路径
}
}
/* ----------------递推一:兔子问题----------------------------- */
/*兔子的规律为数列1,1,2,3,5,8,13,21....*/
#include "stdio.h"
void main()
{
int a[num]={1,1};
int i;
printf("兔子问题:\n");
for(i=0;i<num;i++)
{
if (i<=1)
{
printf("第%d个月的兔子总数为1对\n",i+1);
}
else
{
a[i]=a[i-1]+a[i-2];
printf("第%d个月的兔子总数为%d对\n",i+1,a[i]);
}
}
}
/* ----------------递推二:杨辉三角问题----------------------------- */
#include "stdio.h"
void main()
{
/*编程打印直角杨辉三角形*/
int i,j,n;
int a[20][20];
printf("请输入行数:");
scanf("%d",&n);
for(i=0;i<n;i++)
//初始化第一行和第二行
{
a[i][0]=1;
a[i][i]=1;
}
for(i=2;i<n;i++)
{
for(j=1;j<i;j++)
{
a[i][j]=a[i-1][j-1]+a[i-1][j]; //根据规律
}
}
//输出
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
printf("%5d",a[i][j]);
}
printf("\n");
}
}