[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); } } }