Luke101
Luke101

Reputation: 65238

F# Recursion termination

I have been reading alot about functional programming and f#. I have a snippet of code that I cannot understand. I am familiar with recursive programs but this particular code is bugging me

open System

let rec fact x =
    if x < 1 then 1
    else x * fact (x - 1)

fact 6

In this snippet of code there is no where in the code that terminates the recusion. How does this program know when to stop. If I programmed this in c# I would tell the program to stop recursing when the index or iterator is higher then 6.

Upvotes: 2

Views: 637

Answers (1)

linuxuser27
linuxuser27

Reputation: 7353

The recursion stops when it x is less than 1 because the result of the expression is then 1

if x < 1 then 1

In C# the function would look as follows:

public int fact(int x)
{
   if (x < 1)
      return 1;
   else
      return x * fact(x - 1);
}

Pure functional programming is interesting because there is never a return, all the program does is evaluate. You need to ask yourself 'What does this expression evaluate to?'

Upvotes: 10

Related Questions