C语言和java实现且面条(均用递归实现)

来源:互联网 发布:招数据员要求 编辑:程序博客网 时间:2024/04/29 18:03
/* 一根高筋拉面,中间切一刀,可以得到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));}

0 0