I am writting a code to show the number of ways we can pick k # of objects from n total # of objects, and order them without repetition(n choose k). I am given the recrusive for

``````public static long tough(int x, int y) {
else if (y <= 0) return 1;
``````

We are then asked to write a NON-recursive format, which I already have. My only question is, due to a statement the professor said, is there anyway I can rewrite my non-recursive program so that it uses only ONE for loop, and no other loops, so that it has a time complexity of O(n)? Any help or input advice is greatly appreciated.

``````import java.util.*;
public class KCombination {
public static void main(String[] args) {
Scanner in1 = new Scanner(System.in);
Scanner in2 = new Scanner(System.in);
System.out.println("Input a number of total objects to choose from: ");
int n = in1.nextInt();
System.out.println("Input a select number of objects to choose from the total number of objects: ");
int k = in1.nextInt();
int difference = (n-k);
for (int i = (n-1); i >= 1; i--) {
n *= i;
}

for (int i = (k-1); i >=1; i--) {
k *= i;
}

for (int i = difference-1; i>=1; i--) {
difference *= i;
}

System.out.println("The factorial value of the first input is: " + n +".");
System.out.println("The factorial value of the first input is: " + k +".");
System.out.println("The factorial value of the first and second input's difference is: " + difference +".");

int combination = n/(k*difference);

System.out.println("The number of ways to order k objects chosen from n total objects, without repetion, is: " + combination +".");
}
}
``````
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.