直线划分平面:1条直线把一个平面分为2个平面,2条直线把一个平面分为4个平面,3条直线把一个平面分为7个平面,问n条直线最多把一个平面分为几个平面?
思想:定义递归函数plane_numbers(n),
plane_numbers(0)=1
plane_numbers(1)=2
plane_numbers(2)=4
plane_numbers(3)=7
plane_numbers(n)=plane_numbers(n-1)+交点个数+1(交点个数=n-1)=plane_numbers(n-1)+n
程序:
#include<stdio.h>
void main()
{
int i,n;
printf("请输入直线的条数:");
scanf("%d",&n);
for(i=0;i<=n;i++)
{
int plane_numbers(int n);
printf("%d条直线将一个平面分为%d个平面\n",i,plane_numbers(i));
}
printf("\n");
}
int plane_numbers(int n)
{
int number;
if(n==0)
number=1;
else
number=plane_numbers(n-1)+n;
return number;
}
折线划分平面:1条折线把一个平面分为2个平面,2条折线把一个平面分为7个平面,3条折线把一个平面分为16个平面,问n条折线最多把一个平面分为几个平面?
思想:递归函数plane_numbers(n)
plane_numbers(0)=1
plane_numbers(1)=2
plane_numbers(2)=7
plane_numbers(3)=16
plane_numbers(n)=plane_numbers(n-1)+2*(2*(n-1)+1)-1)=plane_numbers(n-1)+4*n-3
程序:
#include<stdio.h>
void main()
{
int m;
printf("Please input the number of broken line:");
scanf("%d",&m);
int plane_numbers(int n);
printf("The one plane is divided into %d planes by %d broken lines.\n",plane_numbers(m),m);
printf("\n");
}
int plane_numbers(int n)
{
int number;
if(n==0)
number=1;
else
number=plane_numbers(n-1)+4*n-3;
return number;
}