[java面试]逻辑推理6 10 18 32 下一个数?编程实现输入任意一个N位置,该数是多少?java实现


题目:

6 10 18 32 下一个数?编程实现输入任意一个N位置,该数是多少?


10 = 6 + 4         4
18 = 10 + 8        4 + 4 
32 = 18 + 14       8 + 6
? = 32 + 22       14 + 8
? = 54 + 32       22 + 10

? = 86 + 44       32 + 12‘


阶梯思路:

分析特点就是
f(x) = f(x-1)+ M;
其中M又是可递归的


4 8 14 22


f(N)=f(N-1)+2*N


f(1) = 4
f(2) = 8
f(3) = 14
f(4) = 22


F(X) = F(X - 1) + F(Y)
F(Y) = F(Y - 1) + 2*Y

F(X) = F(X - 1) + F(Y - 1)+ 2*Y

编程实现

package com.susheng.practice;

public class RecursionTest
{
	public static void main(String[] args)
	{
		RecurverTest0 rt0 = new RecurverTest0();
		
		for (int i = 1; i < 100; i++)
		{
			System.out.println(rt0.M(i));
		}
	
	} 
}
class RecurverTest0
{
	//二层递归的函数
	private int F(int N)
	{
	  //负数不保证
	  if(0 >= N)
	    return 0;		
	  if (1 == N)
	    return 4;

	  return(F(N-1)+ 2*N);
	}
	//调用M(N)就可以求出N位置的值
	public int M(int N)
	{
	  //负数不保证
	  if(0 >= N)
		  return 0;
	  if(1 == N)
	    return 6;
	  return M(N - 1) + F(N - 1); 
	}	
}


	
}


posted on 2014-06-04 23:14  木鱼哥  阅读(330)  评论(0编辑  收藏  举报

导航