递归之完美覆盖

来源:互联网 发布:创维网络智能电视 编辑:程序博客网 时间:2024/04/28 11:22

这道题我是直接从网上获得递归公式然后直接实现的,递归公式怎么来的,网上有正经的推演,我自己是画图猜测数与数之间的规律然后验证一下

规律如下:f(n)=f(n-2)+2*(f(n-2)+f(n-4)+.......+f(2))+2。

直接看实现,很直接了

package Recursion;import java.util.Scanner;public class Cover {public static void main(String args[]) {Scanner scan=new Scanner(System.in);while(scan.hasNext()) {int n=scan.nextInt();if(n==-1)break;long s=function(n);System.out.println(s);}}public static long function(int n) {//long s=0;//if(n==2) //return 3;//long sum=function(n-2);//for(int i=n-2;i>=2;i-=2)//sum+=2*function(i);//sum+=2;//return sum;long last=0;  //记录f(n-2)的值long last_sum=0;   //记录从f(n-2)到f(2)的所有值的和long cur=3;   //记录当前f(n)的值for(int i=4;i<=n;i+=2) {last=cur;last_sum+=last;  //这一步对每一个f(n)进行累加cur=last+2*last_sum+2;}return cur;}}
中间那段自己写的代码,感觉不像严格的递归,哪里怪怪的,然后上网找了大神的看看,就是下面那个,果然行云流水啊,还是自己太渣,这个思路想好久都想不到。。。