/* 一根高筋拉面,中间切一刀,可以得到2根面条。
如果先对折1次,中间切一刀,可以得到3根面条。
如果连续对折2次,中间切一刀,可以得到5根面条。
那么,连续对折10次,中间切一刀,会得到多少面条呢?
-------------------------------------------
对折0次,得到2根:1*2 = 2
对折1次,得到2 * 2 - 1 = 3
对折2次,得到3 * 2 - 1 = 5
对折3次,得到5 * 2 - 1 = 9
对折4次,得到9 * 2 - 1 = 17
对折5次,得到17 * 2 - 1 = 33
对折6次,得到33 * 2 - 1 = 65
对折7次,得到65 * 2 - 1 = 129
对折8次,得到129 * 2 - 1 = 257
对折9次,得到257 * 2 - 1 = 513
对折10次,得到513 * 2 - 1 = 1025*/
//规律即是:对折n次,得到的面条是上一次的条数*2-1,所以考虑递归实现
//Java实现
public class Main {
public static int F(int n)
{
if(n==0)
return 2;
return 2*F(n-1)-1;
}
public static void main(String[] args) {
System.out.println("对折10次得到"+Main.F(10)+"根面条");
}
}
//C语言实现
#include<stdio.h>
#include<stdlib.h>
int result(int n)
{
if(n==0)
{
return 2;//不对折,直接切开就是2条
}
else
{
return result(n-1)*2-1;//得到的面条是上一次的条数*2-1
}
}
int main()
{
printf("对折十次得到的面条数目是:%d\n",result(10));
}
C语言和java实现且面条(均用递归实现)
最新推荐文章于 2024-03-20 20:15:17 发布