Is this the best way to check sorting (in recursion) without loops?
Based on the naming guidelines methods should be named using PascalCase casing.  



If you evaluate two conditions connected by &amp;&amp; you should always evaluate the faster one first. You can return the result of the condition directly.  

This can be reached if you forget the temp variable and rearange the condition like  

static bool isSortedArray (int[] ar, int length)
{
    if (length == 0) 
    {
        return true;
    }

    return ar[length - 1] &lt;= ar[length] &amp;&amp; isSortedArray(ar, length - 1);
}  




You should also take care of the posibility that ar will be null or that the number of elements is smaller than length.  



Using braces {} for single if..else statements will make your code less error prone.  



ar as a parametername is not well choosen. You shouldn't shorten parameter names. 

isSortedArray should be better named IsArraySorted.



A construct like  

if (condition)  
{
    return true;
}
else
{
    // more code here
}  


will always make the else redundant because if the condition is true it will never be reached.