【问题描述】 把一张夏威夷风情披萨放在桌子上,不许离开,每一刀切下去都是一条直线,切 n 刀最多能分 成多少块?(1<=n<=30)
【输入】输入一个正整数表示所切刀数 n
【输出】输出一个正整数 m,披萨最多被切成的块数。
我的理解是这样的:当前切完之后的块数是上一次切的刀数与上一次切完之后的块数加1,可以用循环和递归做,
下面是代码
#include<stdio.h>
#include<iostream>
using namespace std;
int cutpizza(int n)
{
if(n==0) return 1;
int m=2;
int i = 1;
while (n-1>0)
{
++i;
m = i+m;
--n;
}
return m;
}
int main()
{
int n;
cin >> n;
cout << cutpizza(n) << endl;
}
#include <stdio.h>
int cut(int n)
{
if (n == 0)
{
return 1;
}
else
{
return cut(n - 1) + n;
}
}
int main()
{
int n,m;
scanf("%d",&n);
m = cut(n);
printf("%d",m);
return 0;
}