Simple_HeadRecursion1
 
Code:

package javafxtemplate1;

//textProperty().addListener Listview Label
import java.beans.EventHandler;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventType;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;


/**
*
* @author Manas9
*/
public class JavaFXTemplate1 extends Application {
TextArea textArea1= new TextArea ();
TextArea textArea2= new TextArea ();
String newLine = "\n";static int xx1 ;
TextField textField = new TextField ();
Label label1 = new Label();
@Override
public void start(Stage primaryStage) throws Exception {
//
Group groot1 = new Group();
label1.setText("Type anything");
label1.setLayoutX(10);label1.setLayoutY(30);
Button calculate = new Button("Calculate");
calculate.setLayoutX(80);calculate.setLayoutY(0);
Button btn = new Button();
btn.setLayoutX(10);btn.setLayoutY(0);
textArea1.setLayoutX(10);textArea1.setLayoutY(90);
textArea1.setPrefHeight(300);textArea1.setPrefWidth(300);
textArea1.setPromptText("textarea1");
//
textArea2.setLayoutX(100);textArea2.setLayoutY(90);
textArea2.setPrefHeight(100);textArea2.setPrefWidth(100);
textArea2.setPromptText("textarea2");
//

textField .setLayoutX(160);textField .setLayoutY(20);
textField.setPromptText("Enter an Integer");
/*
textField.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
label1.setText("you Entered "+newValue);
xx1 = Integer.parseInt(newValue);
textArea1.appendText("factorials "+String.valueOf(recursion(xx1)));
//textArea2.appendText("factorials "+String.valueOf(recursion(xx1)));
}
});
//
*/
calculate.setOnAction(e->ctrlBtnClicik());
btn.setText(" Clear");
btn.setOnAction(e->clearArea()) ;

groot1.getChildren().addAll(label1, textField, textArea1, calculate, btn);

//Scene scene = new Scene(groot, 350, 150);
Scene scene = new Scene(groot1, 350, 250);
primaryStage.setScene(scene);
primaryStage.setTitle("Linked Data:: Recursions");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
private int recursion(int n1) {
int x, sum=1, fact=n1;
fact= sum;
if (n1==1) { return n1; }
else {
print(n1);
sum = sum *n1;
textArea1.appendText("f- head sum :: "+ n1 + " * "+ fact+ " = "+ sum+ newLine);
return n1 * recursion(n1-1);
}

}
private int recursion_1 ( int n, int sum )
{
int x, fact = sum;
if(n==1)
{ return sum; }
else
{
print(n);
sum = sum *n;
textArea1.appendText("f- tail sum :: "+ n + " * "+ fact+ " = "+ sum+ newLine);
return recursion_1(n-1,sum);
}

}
private void print(int n1)
{
textArea1.appendText("f-head proessed :: "+ n1 +newLine);
}

private void ctrlBtnClicik(){
int xy1=Integer.parseInt(textField.getText());
label1.setText("you Entered "+ xy1);
//gcd(xy1, 3);
textArea1.appendText("factorials "+String.valueOf(recursion(xy1)));
}
private void clearArea()
{
textArea1.clear();
label1.setText("");
}
}

/*
Convert using Integer.toString(int)
Convert using String.valueOf(int)
Convert using new Integer(int).toString()
Convert using String.format()
*/

displays: