Rod cutting problem getting wrong answer . Why?

import java.util.Scanner;

public class Main {
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int c[]=new int[n];
for(int i=0;i<n;i++){
c[i]=sc.nextInt();
}
long dp[]=new long[n+1];
long val=fun(n,c,0,dp);
System.out.println(val);
}
public static long fun(int len,int c[],long sum,long dp[]){
if(len==1)
return dp[1]=sum+c[0];
if(dp[len]!=0)
return dp[len];
long max=0;
for(int i=0;i<c.length;i++){
if(len-i-1>=1)
max=Math.max(max,fun(len-i-1,c,sum+c[i],dp));
else
return dp[len]=max;
}
return dp[len]=max;
}

}